Как подключить CSV-файл в качестве DataSet в Delphi

12.05.2020

Наверно многие сталкивались с проблемой подключения CSV-файла в качестве DataSet в Delphi.

Предлагаю вам одно из решений данной проблемы. Мы подключим CSV-файла через TADOQuery и построим отчет из этих данных в FastReport VCL.

Создадим проект и добавим следующие компоненты.

1
2
3
4
5
6
7
8
OHLC_Query: TADOQuery;
OHLC_Source: TDataSource;
OHLC_DB: TfrxDBDataset;
frxReport1: TfrxReport;
frxDesigner1: TfrxDesigner; 
frxChartObject1: TfrxChartObject;
ButtonShowReport: TButton;
ButtonDesignReport: TButton;

 

Для подключения к CSV-файлу будем использовать компонент OHLC_Query: TADOQuery.

Настроим его, указав нужную ConnectionString:

1
OHLC_Query.ConnectionString :=’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\;Extended Properties="text;";Persist Security Info=False

Далее вам также нужно будет написать свой Schema.ini файл в соответствии с документацией на веб-сайте Microsoft:

https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver?view=sql-server-ver15

И добавить его в папку проекта.

Разберем на примере нашего демо CSV-файла (EURUSD_200201_200410.csv) , он имеет такую структура:

 

Данные разделены с помощью символа “;”

Данные представлены в более наглядном виде, они имею 9 столбцов:

 

Давайте создадим текстовый файл и сохраним его под называние schema.ini

Этот файл должен иметь следующую структуру согласно с документацией на веб-сайте Microsoft:

https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver?view=sql-server-ver15

schema.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[EURUSD_200201_200410.csv]
ColNameHeader=True 
Format=Delimited(;) 
DecimalSymbol=.
TextDelimiter='
CharacterSet=ANSI 
DateTimeFormat=yyyymmdd
Col1=TICKER char
Col2=PER integer 
Col3=DATE date 
Col4=TIME char
Col5=OPEN float
Col6=HIGH float 
Col7=LOW float
Col8=CLOSE float
Col9=VOL integer

 Устанавливаем нужные настройки для OHLC_Source и OHLC_DB:

1
2
3
OHLC_Source.DataSet := OHLC_Query;
OHLC_DB.DataSource := OHLC_Source;
OHLC_DB.UserName := 'OHLC';

 Создаем шаблон и сохраним его под названием DemoCSV.fr3

Design DemoCSV.fr3

И подключим DataSet к шаблону

   

Далее дабавим события ButtonDesignReportClick, ButtonShowReportClick и FormCreate:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TFormDemoCSV.ButtonDesignReportClick(Sender: TObject);
begin
 frxReport1.DesignReport;
end;
 
procedure TFormDemoCSV.ButtonShowReportClick(Sender: TObject);
begin
 frxReport1.ShowReport();
end;
 
procedure TFormDemoCSV.FormCreate(Sender: TObject);
begin
 frxReport1.LoadFromFile('./DemoCSV.fr3')
end;

 Запустим приложения 

При нажатии на кнопку ButtonShowReport строится отчет.

Поздравляем, вы подключили CSV-файла в качестве DataSet в Delphi и постоили отчет из этих данных в FastReport VCL.

Ссылка для скачивания: DemoCSV.zip

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
12 августа 2024

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
11 декабря 2023

Новый транспорт S3 (Amazon) в FastReport VCL

В этой статье мы рассмотрим новый транспорт в S3 (Amazon) для FastReport VCL, являющийся объектным хранилищем файлов и бакетов.