procedure TForm_OSR01040.ImportClick(Sender: TObject);
var
filename : string;
i,ExcelRowCount:integer;
ExcelApp,WorkBook:variant;
begin
if Opendialog1.Execute = true then
begin
filename:=Opendialog1.FileName;
{ sheetname:=copy(filename,pos('/',filename)+1,length(filename));
while pos('/',sheetname)>0 do
sheetname:=copy(sheetname,pos('/',sheetname)+1,length(sheetname));
sheetname:=copy(sheetname,1,pos('.',sheetname)-1);
} end
else
exit;
try
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := ExcelApp.WorkBooks.Open(filename);
ExcelApp.Visible := false;
ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
for i := 2 to excelrowcount do
begin
ClientDataSet_OSR01040.open;
{ if ((excelapp.Cells[i,1].Value = '') and (ExcelApp.Cells[i,2].Value = null)
and (ExcelApp.Cells[i,3].Value = null)and (ExcelApp.Cells[i,4].Value = null)
and (ExcelApp.Cells[i,5].Value = null)) then
exit
else
begin }
ClientDataSet_OSR01040.Append;
ClientDataSet_OSR01040.FieldByName('MatlID').asstring:=excelapp.Cells[i,1].Value;
ClientDataSet_OSR01040.FieldByName('UomBase').asstring:=excelapp.Cells[i,2].Value;
ClientDataSet_OSR01040.FieldByName('LayerName').asstring:=excelapp.Cells[i,3].Value;
ClientDataSet_OSR01040.FieldByName('UomArea').asfloat:=excelapp.Cells[i,4].Value;
ClientDataSet_OSR01040.FieldByName('Uomweight').asfloat:=excelapp.Cells[i,5].Value;
ClientDataSet_OSR01040.FieldByName('BigPiece').asfloat:=excelapp.Cells[i,6].Value;
// end;
end;
finally
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
WorkBook := Unassigned;
end;
end;
procedure TForm_OSR01040.ExcelExecute(Sender: TObject);
begin
if (ClientDataSet_OSR01040.Active) and (not ClientDataSet_OSR01040.IsEmpty) then
begin
SaveDialog1.FileName:=self.Caption ;
TransferToExcel(DBGrid1,SaveDialog1);
end;
end;
var
filename : string;
i,ExcelRowCount:integer;
ExcelApp,WorkBook:variant;
begin
if Opendialog1.Execute = true then
begin
filename:=Opendialog1.FileName;
{ sheetname:=copy(filename,pos('/',filename)+1,length(filename));
while pos('/',sheetname)>0 do
sheetname:=copy(sheetname,pos('/',sheetname)+1,length(sheetname));
sheetname:=copy(sheetname,1,pos('.',sheetname)-1);
} end
else
exit;
try
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := ExcelApp.WorkBooks.Open(filename);
ExcelApp.Visible := false;
ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
for i := 2 to excelrowcount do
begin
ClientDataSet_OSR01040.open;
{ if ((excelapp.Cells[i,1].Value = '') and (ExcelApp.Cells[i,2].Value = null)
and (ExcelApp.Cells[i,3].Value = null)and (ExcelApp.Cells[i,4].Value = null)
and (ExcelApp.Cells[i,5].Value = null)) then
exit
else
begin }
ClientDataSet_OSR01040.Append;
ClientDataSet_OSR01040.FieldByName('MatlID').asstring:=excelapp.Cells[i,1].Value;
ClientDataSet_OSR01040.FieldByName('UomBase').asstring:=excelapp.Cells[i,2].Value;
ClientDataSet_OSR01040.FieldByName('LayerName').asstring:=excelapp.Cells[i,3].Value;
ClientDataSet_OSR01040.FieldByName('UomArea').asfloat:=excelapp.Cells[i,4].Value;
ClientDataSet_OSR01040.FieldByName('Uomweight').asfloat:=excelapp.Cells[i,5].Value;
ClientDataSet_OSR01040.FieldByName('BigPiece').asfloat:=excelapp.Cells[i,6].Value;
// end;
end;
finally
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
WorkBook := Unassigned;
end;
end;
procedure TForm_OSR01040.ExcelExecute(Sender: TObject);
begin
if (ClientDataSet_OSR01040.Active) and (not ClientDataSet_OSR01040.IsEmpty) then
begin
SaveDialog1.FileName:=self.Caption ;
TransferToExcel(DBGrid1,SaveDialog1);
end;
end;
本文介绍了一种使用Delphi程序从Excel文件中导入数据的方法。通过创建OLE对象与Excel进行交互,读取指定工作表的数据,并将这些数据写入到Delphi应用程序中的客户端数据集。此外,还提供了一个导出数据到Excel的功能。
1937

被折叠的 条评论
为什么被折叠?



