Прочетете Excel файл (XLS) в Делфи

При написването на бизнес приложения на Делфи, или извършване на каквито и да било изчисления, може да се наложи да внасяме файлове (износ) на данни от други приложения. Едно от основните приложения на такива - MS Excel. Как да четем faylyxls vDelphi вече ги разглеждаме!?







Създаване на нов проект и място под формата на три компонента:

StringGrid - е на компонент палитра, в раздела Допълнителна

Бутон за лесен избор на файлове, отваряне на файл диалоговия (работа с диалогови прозорци е описано тук).

За StringGrid. в имоти (свойства), се определя следното:
DefaultRowHeight - 17
FixedCols - 0
FixedRows - 0

В резултат на това под формата ще изглежда така:

Прочетете Excel файл (XLS) в Делфи

На този разкрасяване покритие и започнете да пишете код.

За да работите с Excel файлове, ние се нуждаем ComObj библиотека, част от окомплектовката на доставката Delphi. Свържете го към секцията употреби. Добавете в края, след запетая «ComObj».

Прочетете Excel файл (XLS) в Делфи

Сега се опише процедурата Xls_Open след изпълнението на ключова дума:

процедура Xls_Open (XLSFile: низ; Grid: TStringGrid);
конст
xlCellTypeLastCell = $ 0000000B;
Var
ExlApp, Лист: OLEVariant;
I, J, К, С: цяло число;

започвам
// създава обект Excel
ExlApp: = CreateOleObject ( "Excel.Application ');

// направи Excel невидим прозорец
ExlApp.Visible: = фалшива;

// отворен файл XLSFile
ExlApp.Workbooks.Open (XLSFile);

// създаде листов обект (PAGE) и определя броя на листа (1)
// в книгата, от която ще извършва четенето
Спецификация: = ExlApp.Workbooks [ExtractFileName (XLSFile)] листове [1].







// активирате последната клетка на работния лист
Sheet.Cells.SpecialCells (xlCellTypeLastCell, EmptyParam) .Activate;

// Връща броя последния ред
R: = ExlApp.ActiveCell.Row;

// Връща броя на последната колона
в: = ExlApp.ActiveCell.Column;

// определя броя колони и редове в StringGrid
Grid.RowCount: = R;
Grid.ColCount: = С;

// чете стойността на всяка клетка и копиране нашата маса
за к: = 1 до г се
защото: = 1 в направи
Grid.Cells [I-1, J-1]: = sheet.cells [J, I];
// ако искате да прочетете формулата
//Grid.Cells[i-1,j-1]:= sheet.cells [J, I] .formula;

// затваряне на приложението Excel
ExlApp.Quit;

// изчистите заделената памет
ExlApp: = Неопределен;
Спецификация: = Неопределен;

Процедурата ни Xls_Open има две входни параметри:

  1. XLSFile - пътят към файла Excel (XLS)
  2. Grid - една маса, която ще извършва изход.

За да използвате Xls_Open предписват процедури в случай Щракнете върху бутона Button1, както следва:

Ако след това OpenDialog1.Execute Xls_Open (OpenDialog1.FileName, StringGrid1);

Основните недостатъци на този метод: бавен данни чете (макар и за малки файлове ще се вписват перфектно) и необходимостта от версията на Excel на вашия компютър.

Пълен списък на програмата:

употреби
Windows, съобщения, SysUtils, варианти, Курсове, графики, Контроли, формуляри,
Диалози, решетки, StdCtrls, ComObj;

процедура Xls_Open (XLSFile: низ; Grid: TStringGrid);
конст
xlCellTypeLastCell = $ 0000000B;
Var
ExlApp, Лист: OLEVariant;
I, J, К, С: цяло число;

започвам
// създава обект Excel
ExlApp: = CreateOleObject ( "Excel.Application ');

// направи Excel невидим прозорец
ExlApp.Visible: = фалшива;

// отворен файл XLSFile
ExlApp.Workbooks.Open (XLSFile);

// създаде листов обект (PAGE) и определя броя на листа (1)
// в книгата, от която ще извършва четенето
Спецификация: = ExlApp.Workbooks [ExtractFileName (XLSFile)] листове [1].

// активирате последната клетка на работния лист
Sheet.Cells.SpecialCells (xlCellTypeLastCell, EmptyParam) .Activate;

// Връща броя последния ред
R: = ExlApp.ActiveCell.Row;

// Връща броя на последната колона
в: = ExlApp.ActiveCell.Column;

// определя броя колони и редове в StringGrid
Grid.RowCount: = R;
Grid.ColCount: = С;

// чете стойността на всяка клетка и копиране нашата маса
за к: = 1 до г се
защото: = 1 в направи
Grid.Cells [I-1, J-1]: = sheet.cells [J, I];
// ако искате да прочетете формулата
//Grid.Cells[i-1,j-1]:= sheet.cells [J, I] .formula;

// затваряне на приложението Excel
ExlApp.Quit;

// изчистите заделената памет
ExlApp: = Неопределен;
Спецификация: = Неопределен;

процедура TForm1.Button1Click (Sender: TObject);
започвам
Ако след това OpenDialog1.Execute Xls_Open (OpenDialog1.FileName, StringGrid1);
приключи;