Var ExcelApp,MyWorkBook,Mysheet:Variant; i,J:Integer; SaveName:String; begin ExcelApp:=CreateOleObject( 'Excel.Application' ); MyWorkBook:=CreateOleobject('Excel.Sheet'); ExcelApp.Visible := True; ExcelApp.Caption := '应用程序调用 Microsoft Excel'; MyworkBook:=ExcelApp.workBooks.Add; i:=1; For j:=0 to DBGrid1.Columns.Count-1 do Begin MyworkBook.WorkSheets[1].Cells[i,j+1].Value:=DBGrid1.Columns.Items[j].Title.Caption; End; While Not cdsOldData.Eof Do Begin Inc(i); for j:=0 to DBGrid1.Columns.Count-1 do Begin MyworkBook.WorkSheets[1].Cells[i,j+1].Value:= DBGrid1.DataSource.DataSet.FieldByName(Trim(DBGrid1.Columns.Items[j].Field.FieldName)).AsString;
end; cdsOldData.Next; End;
上面有点错误: Var ExcelApp,MyWorkBook,Mysheet:Variant; i,J:Integer; SaveName:String; begin ExcelApp:=CreateOleObject( 'Excel.Application' ); MyWorkBook:=CreateOleobject('Excel.Sheet'); ExcelApp.Visible := True; ExcelApp.Caption := '应用程序调用 Microsoft Excel'; MyworkBook:=ExcelApp.workBooks.Add; i:=1; For j:=0 to DBGrid1.Columns.Count-1 do Begin MyworkBook.WorkSheets[1].Cells[i,j+1].Value:=DBGrid1.Columns.Items[j].Title.Caption; End; While Not DBGrid1.DataSource.DataSet.Eof Do Begin Inc(i); for j:=0 to DBGrid1.Columns.Count-1 do Begin MyworkBook.WorkSheets[1].Cells[i,j+1].Value:= DBGrid1.DataSource.DataSet.FieldByName(Trim(DBGrid1.Columns.Items[j].Field.FieldName)).AsString;
var eclApp, WorkBook: Variant; xlsFileName: String; i, j: Integer; FieldValue: String; SaveDialog: TSaveDialog; begin messageDlg('在工资报盘前请确保关闭所有EXCEL表!',mtWarning,[mbok],0); SaveDialog:=TSaveDialog.Create(Application); SaveDialog.DefaultExt:='.xls'; SaveDialog.Filter:= 'Excel文件|*.xls|所有文件|*.*'; if savedialog.Execute=true then begin application.ProcessMessages; xlsFileName:= SaveDialog.FileName; try VarClear(eclApp); eclApp:=CreateOleObject('Excel.Application'); except ShowMessage('您的机器里未安裝Microsoft Excel!'); Exit; end; try WorkBook:= eclApp.workBooks.Add; dm.gz.Close; dm.gz.SQL.Clear; dm.gz.SQL.add('select * from gz_jbqkyue'); dm.gz.Open; EclApp.ActiveSheet.Columns[3].NumberFormatLocal:='@'; DBGrid10.DataSource.DataSet.First; for i:=0 to DBGrid10.Columns.Count-1 do begin eclApp.Cells[1,i+1]:=DBGrid10.Columns.Items[i].Title.Caption; end; for i:=0 to DBGrid10.DataSource.DataSet.RecordCount-1 do begin for j:=0 to DBGrid10.Columns.Count-1 do begin FieldValue:=DBGrid10.Columns[j].Field.AsString; eclApp.Cells[i+2, j+1]:=FieldValue; end; DBGrid10.DataSource.DataSet.Next; application.ProcessMessages; end; if FileExists(xlsFileName) then begin if Application.MessageBox('文件已经存在!' + #13 + #10 + '是否进行替换?', '提示', MB_OKCANCEL + MB_ICONQUESTION + MB_SYSTEMMODAL) = IDOK then begin DeleteFile(PChar(xlsFileName)); WorkBook.Saveas(xlsFileName); showmessage('工资报盘到EXECL文件成功,路径为:'+xlsFileName); WorkBook.Close; eclApp.Quit; eclApp:= Unassigned; end; end else begin WorkBook.Saveas(xlsFileName); howmessage('工资报盘到EXECL文件成功,路径为:'+xlsFileName); WorkBook.Close; eclApp.Quit; eclApp:= Unassigned; end; except screen.Cursor:= crdefault; ShowMessage('不能正确操作Excel文件。可能是該文件已被其他程序打开或系統错误,需要注销您的计算机。'); WorkBook.Close; eclApp.Quit; eclApp:=Unassigned; end; end;
ExcelApp,MyWorkBook,Mysheet:Variant;
i,J:Integer;
SaveName:String;
begin
ExcelApp:=CreateOleObject( 'Excel.Application' );
MyWorkBook:=CreateOleobject('Excel.Sheet');
ExcelApp.Visible := True;
ExcelApp.Caption := '应用程序调用 Microsoft Excel';
MyworkBook:=ExcelApp.workBooks.Add;
i:=1;
For j:=0 to DBGrid1.Columns.Count-1 do
Begin
MyworkBook.WorkSheets[1].Cells[i,j+1].Value:=DBGrid1.Columns.Items[j].Title.Caption;
End;
While Not cdsOldData.Eof Do
Begin
Inc(i);
for j:=0 to DBGrid1.Columns.Count-1 do
Begin
MyworkBook.WorkSheets[1].Cells[i,j+1].Value:= DBGrid1.DataSource.DataSet.FieldByName(Trim(DBGrid1.Columns.Items[j].Field.FieldName)).AsString;
end;
cdsOldData.Next;
End;
Var
ExcelApp,MyWorkBook,Mysheet:Variant;
i,J:Integer;
SaveName:String;
begin
ExcelApp:=CreateOleObject( 'Excel.Application' );
MyWorkBook:=CreateOleobject('Excel.Sheet');
ExcelApp.Visible := True;
ExcelApp.Caption := '应用程序调用 Microsoft Excel';
MyworkBook:=ExcelApp.workBooks.Add;
i:=1;
For j:=0 to DBGrid1.Columns.Count-1 do
Begin
MyworkBook.WorkSheets[1].Cells[i,j+1].Value:=DBGrid1.Columns.Items[j].Title.Caption;
End;
While Not DBGrid1.DataSource.DataSet.Eof Do
Begin
Inc(i);
for j:=0 to DBGrid1.Columns.Count-1 do
Begin
MyworkBook.WorkSheets[1].Cells[i,j+1].Value:= DBGrid1.DataSource.DataSet.FieldByName(Trim(DBGrid1.Columns.Items[j].Field.FieldName)).AsString;
end;
DBGrid1.DataSource.DataSet.Next;
End;
加入引用!!
eclApp, WorkBook: Variant;
xlsFileName: String;
i, j: Integer;
FieldValue: String;
SaveDialog: TSaveDialog;
begin
messageDlg('在工资报盘前请确保关闭所有EXCEL表!',mtWarning,[mbok],0);
SaveDialog:=TSaveDialog.Create(Application);
SaveDialog.DefaultExt:='.xls';
SaveDialog.Filter:= 'Excel文件|*.xls|所有文件|*.*';
if savedialog.Execute=true then
begin
application.ProcessMessages;
xlsFileName:= SaveDialog.FileName;
try
VarClear(eclApp);
eclApp:=CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安裝Microsoft Excel!');
Exit;
end;
try
WorkBook:= eclApp.workBooks.Add;
dm.gz.Close;
dm.gz.SQL.Clear;
dm.gz.SQL.add('select * from gz_jbqkyue');
dm.gz.Open;
EclApp.ActiveSheet.Columns[3].NumberFormatLocal:='@';
DBGrid10.DataSource.DataSet.First;
for i:=0 to DBGrid10.Columns.Count-1 do
begin
eclApp.Cells[1,i+1]:=DBGrid10.Columns.Items[i].Title.Caption;
end;
for i:=0 to DBGrid10.DataSource.DataSet.RecordCount-1 do
begin
for j:=0 to DBGrid10.Columns.Count-1 do
begin
FieldValue:=DBGrid10.Columns[j].Field.AsString;
eclApp.Cells[i+2, j+1]:=FieldValue;
end;
DBGrid10.DataSource.DataSet.Next;
application.ProcessMessages;
end;
if FileExists(xlsFileName) then
begin
if Application.MessageBox('文件已经存在!' + #13 + #10 +
'是否进行替换?', '提示', MB_OKCANCEL +
MB_ICONQUESTION + MB_SYSTEMMODAL) = IDOK then
begin
DeleteFile(PChar(xlsFileName));
WorkBook.Saveas(xlsFileName);
showmessage('工资报盘到EXECL文件成功,路径为:'+xlsFileName);
WorkBook.Close;
eclApp.Quit;
eclApp:= Unassigned;
end;
end
else
begin
WorkBook.Saveas(xlsFileName);
howmessage('工资报盘到EXECL文件成功,路径为:'+xlsFileName);
WorkBook.Close;
eclApp.Quit;
eclApp:= Unassigned;
end;
except
screen.Cursor:= crdefault;
ShowMessage('不能正确操作Excel文件。可能是該文件已被其他程序打开或系統错误,需要注销您的计算机。');
WorkBook.Close;
eclApp.Quit;
eclApp:=Unassigned;
end;
end;
我怎么只能显示标题啊。数据都显示不出来啊!!!!!
我试了你的方法也出了同样的问题,没有数据。只有标题!!!1
不过Stringgrid对数据的操作好像有一点不同,我现在还不是很熟悉,不知哪位大哥能给一下code?
还有一个奇怪的问题。保存了的.xls文件直接打开什么都堪布到。但是先打开excel,从excel中大开它就能看到了。这是什么原因??
再问个问题,我现在如何将这个文件中的数据装入数据库中对应的表中????