Прочетете Excel файл (XLS) в Делфи
При написването на бизнес приложения на Делфи, или извършване на каквито и да било изчисления, може да се наложи да внасяме файлове (износ) на данни от други приложения. Едно от основните приложения на такива - MS Excel. Как да четем faylyxls vDelphi вече ги разглеждаме!?
Създаване на нов проект и място под формата на три компонента:
StringGrid - е на компонент палитра, в раздела Допълнителна
Бутон за лесен избор на файлове, отваряне на файл диалоговия (работа с диалогови прозорци е описано тук).
За StringGrid. в имоти (свойства), се определя следното:
DefaultRowHeight - 17
FixedCols - 0
FixedRows - 0
В резултат на това под формата ще изглежда така:
На този разкрасяване покритие и започнете да пишете код.
За да работите с Excel файлове, ние се нуждаем ComObj библиотека, част от окомплектовката на доставката Delphi. Свържете го към секцията употреби. Добавете в края, след запетая «ComObj».
Сега се опише процедурата 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 има две входни параметри:
- XLSFile - пътят към файла Excel (XLS)
- 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);
приключи;