2,498
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp: Variant;//EXCEL打开对象
link:string;
i:integer;
begin
if dlgOpen1.Execute then
begin
link:=dlgOpen1.FileName;
try
ExcelApp:= CreateOleObject('Excel.Application');
ExcelApp.WorkBooks.Open(link);
{打开EXCEL文件,不然提示外部表不是预期的格式}
con1.Connected:=False ;
qry1.Active :=False ;
//con1:ADOConnection
//con1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";DataSource=';
//con1.ConnectionString:=con1.ConnectionString+link;
//con1.ConnectionString:=con1.ConnectionString+';ExtendedProperties=excel 8.0;Persist Security Info=false';
//con1.LoginPrompt:=False ;
//con1.Connected:=True;
//qry1:ADOQuery
qry1.close;
qry1.SQL.Clear;
qry1.sql.Add('SELECT * FROM Azz');
qry1.open;
if Qry1.RecordCount > 0 then
begin
for i:=1 to qry1.RecordCount do
begin
Application.ProcessMessages;
self.refresh;
ClientDataSet1.Close;
ClientDataSet1.CommandText:='insert into Azz(序号,客户名称,发货联系地址,收货人,收货电话,传真号,业务员)values(:a,:b,:c,:d,:e,:f,:g)';
ClientDataSet1.Params[0].AsString :=qry1.FieldByName('序号').AsString;
ClientDataSet1.Params[1].AsString :=qry1.FieldByName('客户名称').AsString;
ClientDataSet1.Params[2].AsString :=qry1.FieldByName('发货联系地址').AsString;
ClientDataSet1.Params[3].AsString :=qry1.FieldByName('收货人').AsString;
ClientDataSet1.Params[4].AsString :=qry1.FieldByName('收货电话').AsString;
ClientDataSet1.Params[5].AsString :=qry1.FieldByName('传真号').AsString;
ClientDataSet1.Params[6].AsString :=qry1.FieldByName('业务员').AsString;
try
ClientDataSet1.Execute;
except
end;
Application.ProcessMessages;
Qry1.Next;
end;
end;
try
ClientDataSet1.Execute;
ShowMessage('导入成功');
Except
ShowMessage('导入失败');
end;
{对EXCEL文件存盘,关闭文件,退出}
ExcelApp.ActiveWorkBook.Saved := True;
{对EXCEL文件存盘,关闭文件,退出}
Finally
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
end;
end;
end;
end.
iCol:=1;
strValue:=Trim(Excel.ActiveSheet.Cells[1,iCol].value);
while strValue <>'' do
begin
if strValue = '姓名' then
indexName:=iCol;
if strValue = '年龄' then
indexAge:=iCol;
if strValue = '性别' then
indexSex:=iCol;
Inc(iCol);
strValue:= Trim(Excel.ActiveSheet.Cells[1,iCol].value);
end;
[/quote]
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, iMaxRow, iMaxCol, iCount : Integer;
ExcelApp, Sheet : Variant;
sStr, sTaskNo, sError, sTemp : String;
bBool : Boolean;
begin
if dlgOpen1.Execute then
begin
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select * from Azz');
qry1.Open;
try
ExcelApp := CreateOleObject('Excel.Application'); //创建OLE对象
ExcelApp.WorkBooks.Open(dlgOpen1.FileName);
ExcelApp.WorkSheets[1].Activate;
Sheet := ExcelApp.WorkSheets[1];
iMaxRow := Sheet.UsedRange.Rows.Count;
iMaxCol := Sheet.UsedRange.Columns.Count;
for i := 2 to iMaxRow do
begin
qry1.Append;
qry1.FieldByName('序号').AsString := Sheet.Cells[i,1].Value;
qry1.FieldByName('客户名称').AsString := Sheet.Cells[i,2].Value;
qry1.FieldByName('发货联系地址').AsString := Sheet.Cells[i,3].Value;
qry1.FieldByName('收货人').AsString := Sheet.Cells[i,4].Value;
qry1.FieldByName('收货电话').AsString := Sheet.Cells[i,5].Value;
qry1.FieldByName('传真号').AsString := Sheet.Cells[i,6].Value;
qry1.FieldByName('业务员').AsString := Sheet.Cells[i,7].Value;
qry1.Post;
end;
showmessage('表格1导入成功!');
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
except
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
end;
end;
end;
是直接把你那段代码改一下复制进去吗?好像会报错啊[/quote]
以前学过编程吗?其他任何语言都可以。有点基础就应该能读懂了,只需很少的改动。[/quote]
谢谢指导
iCol:=1;
strValue:=Trim(Excel.ActiveSheet.Cells[1,iCol].value);
while strValue <>'' do
begin
if strValue = '姓名' then
indexName:=iCol;
if strValue = '年龄' then
indexAge:=iCol;
if strValue = '性别' then
indexSex:=iCol;
Inc(iCol);
strValue:= Trim(Excel.ActiveSheet.Cells[1,iCol].value);
end;
iCol:=1;
strValue:=Trim(Excel.ActiveSheet.Cells[1,iCol].value);
while strValue <>'' do
begin
if strValue = '姓名' then
indexName:=iCol;
if strValue = '年龄' then
indexAge:=iCol;
if strValue = '性别' then
indexSex:=iCol;
Inc(iCol);
strValue:= Trim(Excel.ActiveSheet.Cells[1,iCol].value);
end;
[/quote]
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, iMaxRow, iMaxCol, iCount : Integer;
ExcelApp, Sheet : Variant;
sStr, sTaskNo, sError, sTemp : String;
bBool : Boolean;
begin
if dlgOpen1.Execute then
begin
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select * from Azz');
qry1.Open;
try
ExcelApp := CreateOleObject('Excel.Application'); //创建OLE对象
ExcelApp.WorkBooks.Open(dlgOpen1.FileName);
ExcelApp.WorkSheets[1].Activate;
Sheet := ExcelApp.WorkSheets[1];
iMaxRow := Sheet.UsedRange.Rows.Count;
iMaxCol := Sheet.UsedRange.Columns.Count;
for i := 2 to iMaxRow do
begin
qry1.Append;
qry1.FieldByName('序号').AsString := Sheet.Cells[i,1].Value;
qry1.FieldByName('客户名称').AsString := Sheet.Cells[i,2].Value;
qry1.FieldByName('发货联系地址').AsString := Sheet.Cells[i,3].Value;
qry1.FieldByName('收货人').AsString := Sheet.Cells[i,4].Value;
qry1.FieldByName('收货电话').AsString := Sheet.Cells[i,5].Value;
qry1.FieldByName('传真号').AsString := Sheet.Cells[i,6].Value;
qry1.FieldByName('业务员').AsString := Sheet.Cells[i,7].Value;
qry1.Post;
end;
showmessage('表格1导入成功!');
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
except
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
end;
end;
end;
是直接把你那段代码改一下复制进去吗?好像会报错啊[/quote]
以前学过编程吗?其他任何语言都可以。有点基础就应该能读懂了,只需很少的改动。
iCol:=1;
strValue:=Trim(Excel.ActiveSheet.Cells[1,iCol].value);
while strValue <>'' do
begin
if strValue = '姓名' then
indexName:=iCol;
if strValue = '年龄' then
indexAge:=iCol;
if strValue = '性别' then
indexSex:=iCol;
Inc(iCol);
strValue:= Trim(Excel.ActiveSheet.Cells[1,iCol].value);
end;
[/quote]
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, iMaxRow, iMaxCol, iCount : Integer;
ExcelApp, Sheet : Variant;
sStr, sTaskNo, sError, sTemp : String;
bBool : Boolean;
begin
if dlgOpen1.Execute then
begin
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select * from Azz');
qry1.Open;
try
ExcelApp := CreateOleObject('Excel.Application'); //创建OLE对象
ExcelApp.WorkBooks.Open(dlgOpen1.FileName);
ExcelApp.WorkSheets[1].Activate;
Sheet := ExcelApp.WorkSheets[1];
iMaxRow := Sheet.UsedRange.Rows.Count;
iMaxCol := Sheet.UsedRange.Columns.Count;
for i := 2 to iMaxRow do
begin
qry1.Append;
qry1.FieldByName('序号').AsString := Sheet.Cells[i,1].Value;
qry1.FieldByName('客户名称').AsString := Sheet.Cells[i,2].Value;
qry1.FieldByName('发货联系地址').AsString := Sheet.Cells[i,3].Value;
qry1.FieldByName('收货人').AsString := Sheet.Cells[i,4].Value;
qry1.FieldByName('收货电话').AsString := Sheet.Cells[i,5].Value;
qry1.FieldByName('传真号').AsString := Sheet.Cells[i,6].Value;
qry1.FieldByName('业务员').AsString := Sheet.Cells[i,7].Value;
qry1.Post;
end;
showmessage('表格1导入成功!');
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
except
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
end;
end;
end;
是直接把你那段代码改一下复制进去吗?好像会报错啊
DataSet1:=TClientDataSet.Create(Self);
DataSource1:=TDataSource.Create(Self);
with aDataSet1.FieldDefs do // 创建字段 字段要与读取数据的表一致
begin
Add('结算年月',ftString,20,False);
Add('合计',ftCurrency,0,False);
Add('ID',ftString,20,False);
end;
aDataSet1:=CreateTableInMemory(aDataSet1.FieldDefs); // 创建内存表 字段要与读取数据的表一致
aDataSource1.DataSet:=aDataSet1;
这样,才能读入数据了。