//使用OleServer, Excel2000procedure GenXlsFile(DBGrid: TDBGrid; Fn: string; Vis: Boolean);
//uses ComObj;
var
ExcelApp: Variant;
i, j: integer;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
except
application.MessageBox('系统中的MS Excel软件没有安装或安装不正确!', '错误', MB_ICONERROR + MB_OK);
exit;
end;
ExcelApp.visible := vis;
try
excelapp.caption := '应用程序调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
//写入标题行
for i := 1 to DBGrid.Columns.Count do //sDataSet.Fields.Count do
begin
//if DBGrid.Columns[i - 1].Visible then
ExcelApp.Cells[1, i].Value := (DBGrid.Columns[i - 1].Title.Caption);
end;
DBGrid.DataSource.DataSet.First;
i := 2;
while not DBGrid.DataSource.DataSet.Eof do
begin
for j := 0 to DBGrid.Columns.Count - 1 do //sDataSet.Fields.Count-1 do
begin
//if DBGrid.Columns[j].Visible then
ExcelApp.Cells[i, j + 1].Value := DBGrid.DataSource.DataSet.FieldByName(DBGrid.Columns[j].FieldName).AsString; //sDataSet.Fields[j].AsString;
end;
DBGrid.DataSource.DataSet.Next;
i := i + 1;
end;
DBGrid.DataSource.DataSet.First;
if application.MessageBox('数据导出完成.确认保存吗?', '问题', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1 + MB_SYSTEMMODAL) = IDYES then
begin
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveWorkBook.SaveAs(fn);
end
else begin
ExcelApp.ActiveWorkBook.Saved := True; //不保存
end;
finally
excelapp.quit; //退出EXCEL软件
end;
end;
//uses ComObj;
var
ExcelApp: Variant;
i, j: integer;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
except
application.MessageBox('系统中的MS Excel软件没有安装或安装不正确!', '错误', MB_ICONERROR + MB_OK);
exit;
end;
ExcelApp.visible := vis;
try
excelapp.caption := '应用程序调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
//写入标题行
for i := 1 to DBGrid.Columns.Count do //sDataSet.Fields.Count do
begin
//if DBGrid.Columns[i - 1].Visible then
ExcelApp.Cells[1, i].Value := (DBGrid.Columns[i - 1].Title.Caption);
end;
DBGrid.DataSource.DataSet.First;
i := 2;
while not DBGrid.DataSource.DataSet.Eof do
begin
for j := 0 to DBGrid.Columns.Count - 1 do //sDataSet.Fields.Count-1 do
begin
//if DBGrid.Columns[j].Visible then
ExcelApp.Cells[i, j + 1].Value := DBGrid.DataSource.DataSet.FieldByName(DBGrid.Columns[j].FieldName).AsString; //sDataSet.Fields[j].AsString;
end;
DBGrid.DataSource.DataSet.Next;
i := i + 1;
end;
DBGrid.DataSource.DataSet.First;
if application.MessageBox('数据导出完成.确认保存吗?', '问题', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1 + MB_SYSTEMMODAL) = IDYES then
begin
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveWorkBook.SaveAs(fn);
end
else begin
ExcelApp.ActiveWorkBook.Saved := True; //不保存
end;
finally
excelapp.quit; //退出EXCEL软件
end;
end;
解决方案 »
- gdi+图像处理
- DbGridEH为什么插入新行会全选所有记录。悲剧!
- DxDBGrid如何选择行列!
- 如何截获一个发给控件的消息,比如Tlistview控件添加一个节点.
- 超级菜鸟级问题。
- 有点难度的sql语句,如何用一条sql语句删掉记录中某个字段的值中的空格。。。
- 图片保存到数据库的问题,紧急求救!!!
- 大虾,小虾, 抢分的时候到了: 求购一个Tcp/ip广播/接收广播的源程序(不许用元件),UDP广播不算!
- 请大家看看,代码有错吗?无错位何edit2.text中开不到查找的数据!
- 如何调用原来编写好的功能pas文件
- 请各位帮忙了,如何给Chart控件画曲线!在线等待!!!
- 需求一个函数的帮助。。
你们差这个单元文件
并且你最好在程序中控制workbook and worksheet
myworksheet1,MyExcel,MyWorkbook:Variant;
顺序:MyExcel.disconnect MyExcel.quit MyExcel.free myworksheet1.free MyWorkbook.free
所以需要use