同意楼上的办法,最简单。
也可以通过代码实现。下面是导入到STRINGGRID的例子,你可以把中间导入的语句改成
SQL语句,插入到ACCESS
procedure Timport_form.mOpenClick(Sender: TObject);
var
row, col, merge_col, merge_row : integer;
eaImport : TExcelApplication;
ewbImport : TExcelWorkbook;
ewsImport : TExcelWorksheet;
begin
eaImport := TExcelApplication.Create(Application);
OpenDialog.InitialDir := ExtractFileDir(Paramstr(0));
if OpenDialog.Execute then
begin
try
eaImport.ConnectKind := ckNewInstance;
eaImport.Connect;
except
showmessage('请先安装 Excel !');
eaImport.Free;
Exit;
end;
try
eaImport.Workbooks.Open(OpenDialog.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0);
eaImport.Visible[1] := true;
except
eaImport.Disconnect;
eaImport.Quit;
eaImport.Free;
showmessage('无法打开文件!');
mImport.Visible := false;
Panel1.Visible := false;
Exit;
end;
try
ewbImport := TExcelWorkbook.Create(Application);
ewsImport := TExcelWorksheet.Create(Application);
stbMessage.SimpleText := '正在读取数据...';
ewbImport.ConnectTo(eaImport.Workbooks[1]);
ewsImport.ConnectTo(ewbImport.Worksheets[1] as _Worksheet);
for row := 0 to sgImport.RowCount - 1 do
sgImport.Rows[row].Clear;
col := 1;
sgImport.ColCount := 1;
while trim(ewsImport.Cells.Item[1,col]) <> '' do
begin
sgImport.ColCount := sgImport.ColCount + 1;
sgImport.Cells[col,0] := trim(ewsImport.Cells.Item[1,col]);
inc(col);
end;
sgImport.RowCount := 2;
sgImport.FixedRows := 1;
sgImport.FixedCols := 1;
sgImport.ColWidths[0] := 20;
row := 2;
while (trim(ewsImport.Cells.Item[row,1]) <> '') or (sgImport.Cells[1,row-1] <> '') do
begin
sgImport.RowCount := row;
sgImport.Cells[0,row-1] := inttostr(row-1);
for merge_col := 1 to col - 1 do
if sgImport.Cells[merge_col,row-1] = '' then
for merge_row := row to row + ewsImport.Cells.Item[row,merge_col].Mergearea.rows.Count - 1 do
sgImport.Cells[merge_col,merge_row-1] := ewsImport.Cells.Item[row,merge_col];
inc(row);
end;
ewsImport.Disconnect;
ewbImport.Disconnect;
eaImport.Disconnect;
eaImport.Quit;
ewsImport.Free;
ewbImport.Free;
eaImport.Free;
stbMessage.SimpleText := '数据读取完毕。';
Panel1.Visible := true;
mImport.Visible := true;
WindowState := wsMaximized;
except
eaImport.Disconnect;
eaImport.Quit;
eaImport.Free;
showmessage('文件读取错误!');
mImport.Visible := false;
Panel1.Visible := false;
end;
end;
end;