请教:这种要求的EXCEL文件怎么实现导入 ( 积分: 200 )

  • 主题发起人 主题发起人 tgbdlwm
  • 开始时间 开始时间
T

tgbdlwm

Unregistered / Unconfirmed
GUEST, unregistred user!
EXCEL文件:File1 (可能有(sheet1,sheet2,shee3...sheetN)
要求:
1、读取文件File1共有多少sheet并把这些sheet名放入ComboBox1中
2、从ComboBox1中选择要读取的sheet,并指定该sheet开始读取数据的行、列
例:想从sheet3的第4行、第2列开始读取数据,并把读取的数据写入一个ACCESS表中
 
EXCEL文件:File1 (可能有(sheet1,sheet2,shee3...sheetN)
要求:
1、读取文件File1共有多少sheet并把这些sheet名放入ComboBox1中
2、从ComboBox1中选择要读取的sheet,并指定该sheet开始读取数据的行、列
例:想从sheet3的第4行、第2列开始读取数据,并把读取的数据写入一个ACCESS表中
 
ADOConnection2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Excel Files;'+
'DBQ='+FileName+';DriverId=790;MaxBufferSize=2048;PageTimeout=5;"';
ADOConnection2.Open;
ADOConnection2.GetTableNames(ComboBox1.Items,true);
 
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
begin
with ADOQuery1 do
begin
close;
sql.Clear;
Parameters.Clear;
ParamCheck := false;


//静态路径 ,把excel中导出的数据插入到sql中已存在的表中
sql.Text := 'insert into lx SELECT id,Name FROM OpenDataSource(' +
'''Microsoft.Jet.OLEDB.4.0''' + ',' +
'''Data Source="G:/le.xls";User ID=Admin;Password=;Extended properties=Excel 8.0''' +
')...[sheet1$]';
//动态路径 ,新建一个表来存储excel表中导出的数据 ,test1 为新表名
sql.Text := ' SELECT * into test1 FROM OpenDataSource(' +
'''Microsoft.Jet.OLEDB.4.0''' + ',' +
'''Data Source="' + ExcelPath +
'";User ID=Admin;Password=;Extended properties=Excel 8.0''' +
')...[sheet1$]'; //ExcelPath 为存储路径的变量

execsql;
end;

end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
ComboBox1.Clear;
OpenDialog1.Filter := '*.XLS|*.XLS';
OpenDialog1.DefaultExt := 'XLS';
if OpenDialog1.Execute then
begin
try //创建文件
ExcelApplication1.Connect;
except
Application.Messagebox('Excel 没有安装!', 'Hello', MB_ICONERROR +
mb_Ok);
Abort;
end;
Filename := OpenDialog1.FileName;
ExcelApplication1.Visible[0] := false;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open
(Filename, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0));
for i := 1 to ExcelWorkbook1.Worksheets.Count do
begin
ComboBox1.Items.Add((ExcelWorkbook1.Worksheets.Item
as _WorkSheet).Name);
end;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i,j: Integer;
 row, col : Integer;
begin
ExcelWorkSheet1.ConnectTo(ExcelWorkbook1.Worksheets.Item[ComboBox1.ItemIndex + 1] as _WorkSheet);
ExcelWorkSheet1.Activate;
Edit1.Text:=ExcelWorksheet1.Cells.Item[4,2];
//如果要循环读取到最末的话
 col := ExcelWorksheet1.UsedRange[0].Cells.Columns.Count;
row := ExcelWorksheet1.UsedRange[0].Cells.rows.Count;
 for I := 2 to col do
begin
Application.ProcessMessages;
for J := 4 to row do
begin
edit1.text:= ExcelWorksheet1.Cells.Item[i, j];//如果你要数据库赋值什么的,也是这么做;
end;
end;
end;
 
谢谢楼上各位。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3199851
 
谢谢各位
 
后退
顶部