delphi 的Excel问题搜集 from CSDN

我现在想将查询出来的数据保存到设计好的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页面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值