我现在想将查询出来的数据保存到设计好的Excel模板中,我在程序中打开了Excel模板,但是模板的数据明细部分需要动态插入一行数据,怎么处理?
Excel模板:
标题
字段1 字段2 字段3
(明细数据显示,格式已经设置好)
总计 SUM(字段3)
日期:
处理程序:
//这是我修改后的代码,已经可以了,和大家共勉
procedure TForm1.Button5Click(Sender: TObject);
var
WorkBook,Sheet,ExcelObj,Excel: OleVariant;
RecordCounts,iPos : Integer;
I,J: Integer;
begin
ExcelObj := CreateOleObject('Excel.sheet');
Excel := ExcelObj.Application;
Excel.DisplayAlerts := False;
WorkBook := Excel.WorkBooks.Open('D:/分配明细报表模板.xls');
WorkBook.Sheets[1].Name := '基金名称';
Sheet := WorkBook.Sheets[1];
Excel.ActiveWindow.WindowState := -4137;
//
Sheet.Cells[2,1].Value := '基金名称';
Sheet.Cells[3,1].Value := '日期'+FormatDateTime('YYYY.MM.DD',Date);
RecordCounts := qry1.RecordCount;
//首先在模板中循环复制数据明细部分
Sheet.Cells.Rows['5:5'].Select;
for iPos := 1 to RecordCounts do
begin
Sheet.Cells.Rows['5:5'].Copy;
Sheet.Cells.Rows['5:5'].Insert(-4121); //在第5行之前插入
Excel.CutCopyMode := False;
end;
//将数据输入到模板中
qry1.First;
J:= 5;
while not qry1.Eof do
begin
for i := 1 to qry1.FieldCount do
Sheet.cells[j,i] := Trim(qry1.Fields[i-1].AsString);
qry1.Next;
inc(j);
end;
qry1.First;
//保存
Excel.ActiveWorkBook.SaveAs('D:/Test.xls');
WorkBook.Close;
Excel.Quit;
end;
小弟有一个excel模板,想把数据库中的数据写到模板里再打印出来,但是我的代码总是自己在打开的模板里新增一个sheet(sheet4),在把数据写到新的sheet4中(那样我要模板有什么用),请问怎么解决啊??我要他写在sheet1中的啊!!
var
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
begin
ExcelApplication1 := TExcelApplication.Create(Application);
ExcelWorksheet1 := TExcelWorksheet.Create(Application);
ExcelWorkbook1 := TExcelWorkbook.Create(Application);
ExcelApplication1.Connect;
excelapplication1.Visible[0]:=true;
ExcelApplication1.Workbooks.Add('C:/许可证数据库/正本结构.xls', 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
excelsheet.Cells.Item[2,7]:=trim(bhy.Text);//写数据
excelsheet.PrintOut;
================================
//顺便问一下,最后怎么不保存退出啊??
answer1:
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.ActiveSheet as _Worksheet);
用ActiveWorkbook, WorkbookSheet 試下
>>//顺便问一下,最后怎么不保存退出啊??
好象是設置
ExcelWorkbook1.Saved[0] := true;
就不會提示保存了, 你試了, 記不太清了
answer2:
uses ComObj;
var
workbook,sheet,excelObj,excel : OleVariant;
begin
excelObj := CreateOleObject('excel.sheet');
excel := excelObj.Application;
workbook := excel.workbooks.open( 'C:/许可证数据库/正本结构.xls' );//打开模板的位置
sheet := workbook.sheets[1];
Excel.ActiveWindow.WindowState := -4137;
excel.Cells[2,7]:=trim(bhy.Text);//写数据
………………
Excel.visible := true;
end;
这个是可行的,楼主不妨试一试
ExcelApplication1.Workbooks.Add('C:/许可证数据库/正本结构.xls', 0);这个语句可能是增加了一个sheet页面