следующий код считывает из ячейки А1 и записывает в ячейку [1,1] Table: TStringGrid
| Код | ... uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExcelXP, OleServer, Grids;
type TForm1 = class(TForm) ExcelApplication1: TExcelApplication; ExcelWorksheet1: TExcelWorksheet; ExcelWorkbook1: TExcelWorkbook; OpenDialog1: TOpenDialog; Button1: TButton; Table: TStringGrid; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var V:OleVariant; begin if OpenDialog1.Execute then begin // запускаем Excel ExcelApplication1.AutoConnect:=true; // открываем книгу ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.OpenXML(OpenDialog1.FileName,EmptyParam)); // соединяемся с книгой ExcelApplication1.ConnectTo(ExcelWorkbook1.Application); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.ActiveSheet as ExcelWorksheet); // делаем видимым Excel ExcelApplication1.Visible[0]:=true; // считываем ячейку v:=ExcelWorksheet1.Range['A1',EmptyParam]; // записываем в таблицу Table.Cells[1,1]:=V; // выходим из Excel ExcelApplication1.Quit; end;
end; ... |
в твоём случае надо записывать в БД следовательно:
| Код | ... uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExcelXP, OleServer, Grids;
type TForm1 = class(TForm) ExcelApplication1: TExcelApplication; ExcelWorksheet1: TExcelWorksheet; ExcelWorkbook1: TExcelWorkbook; OpenDialog1: TOpenDialog; Button1: TButton; Table: TStringGrid; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var V:OleVariant; begin if OpenDialog1.Execute then begin // запускаем Excel ExcelApplication1.AutoConnect:=true; // открываем книгу ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.OpenXML(OpenDialog1.FileName,EmptyParam)); // соединяемся с книгой ExcelApplication1.ConnectTo(ExcelWorkbook1.Application); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.ActiveSheet as ExcelWorksheet); // делаем видимым Excel ExcelApplication1.Visible[0]:=true; // считываем ячейку v:=ExcelWorksheet1.Range['A1',EmptyParam]; // записываем в таблицу Table1.Append; //здесь наши изменения. первая команда добавляет запись в БД Table1.FieldByName('Pole1').AsString:=S; // вторая записывает данные Table1.Post; // третьей сохраняем изменения
// выходим из Excel ExcelApplication1.Quit; end;
end; ... |
если количество сток не известно, то :
| Код | ... procedure TForm1.Button1Click(Sender: TObject); var V:OleVariant; row, i:integer: begin if OpenDialog1.Execute then begin // запускаем Excel ExcelApplication1.AutoConnect:=true; // открываем книгу ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.OpenXML(OpenDialog1.FileName,EmptyParam)); // соединяемся с книгой ExcelApplication1.ConnectTo(ExcelWorkbook1.Application); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.ActiveSheet as ExcelWorksheet); // делаем видимым Excel ExcelApplication1.Visible[0]:=true; ExcelWorksheet1.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; row:=ExcelApplication1.ActiveCell.Row; // от 2 т.к. предпологаю, что первая является заголовком for i:=2 to row do begin // считываем ячейку v:=ExcelWorksheet1.Range['A'+inttostr(i),EmptyParam]; // записываем в таблицу Table1.Append; // добавляеь запись в БД Table1.FieldByName('Pole1').AsString:=S; // записываем данные Table1.Post; // сохраняем изменения // чтоб приложение не "повисало" Application.ProgresMessages; end; // выходим из Excel ExcelApplication1.Quit; end;
end; ... |
последний код прочитает и занесёт в БД из первого слобеца Excel |