如何用程序控制EXECL文件中某个SHEET的数据导入到ACCESS里? (100分)

  • 主题发起人 主题发起人 unicom
  • 开始时间 开始时间
U

unicom

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用程序控制EXECL文件中某个SHEET的数据导入到ACCESS里?
请详细点.
 
读取当前sheet中每个单元格数据,插入即可,主要的问题是如何控制显示方式,一些数据
库中的数据在excel显示不是你要的,要控制,这个可以看看以前的帖子
 
用ado连接这两个数据库,然后将execl的数据放入到access里即可
 
同意楼上的办法,最简单。
也可以通过代码实现。下面是导入到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;



 
多人接受答案了。
 
后退
顶部