起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: ccseasy

【结贴】如何把docsheet导出到excel**

[复制链接]
发表于 2008-6-16 18:41:18 | 显示全部楼层
换了一个copy方法,不过要楼主自己明确拷贝的范围(不是整页拷贝的)

procedure TExcel_Demo.butCreateSheetClick(Sender: TObject);
var
  lFileName, lSource: String;
  oExcel, oWorksheet: object;
  app, workbooks, sourceworkbook, sourceworksheets, sourceworksheet,
  workbook, worksheets, worksheet: DispatchHelper;
begin
  lfilename:='c:\demo.xls';
  lSource := 'c:\source.xls';

  oExcel:= ComObj.CreateOleObject('Excel.Application');
  app := DispatchHelper.Create(oExcel);
  app.PropertyPut('Visible', [True]);

  workbooks := DispatchHelper.Create(app.PropertyGet('Workbooks',[]));
  sourceworkbook := DispatchHelper.Create(workbooks.InvokeMethod('Open',[lSource]));//打开文件

  sourceworksheets := System.DispatchHelper.Create(sourceworkbook.PropertyGet('Sheets',[]));
  sourceworksheet := System.DispatchHelper.Create(sourceworksheets.PropertyGet('Item',[1]));
  //worksheet.PropertyPut('Name', ['wxw']);

  workbook := DispatchHelper.Create(workbooks.InvokeMethod('Open',[lFileName]));//打开文件
  worksheets := System.DispatchHelper.Create(workbook.PropertyGet('Sheets',[]));
  //oWorksheet := worksheets.PropertyGet('Item',[1]);
  //worksheet := System.DispatchHelper.Create(oWorksheet);

  //此方法无法调用 sourceworksheet.InvokeMethod('Copy', [true, false], [oWorksheet]);
  worksheet := AddWorksheet('newSheet', worksheets);
  copyArea(sourceworksheet, worksheet);

  //(oExcel as IDisposable).Dispose;
end;

procedure TExcel_Demo.copyArea(ASource, ATarget: DispatchHelper);
var
  sUsed, tUsed, sRange, tRange: DispatchHelper;
begin
  sRange := DispatchHelper.Create(ASource.PropertyGet('Range', ['A1', 'C8']));
  sRange.InvokeMethod('Copy', []);

  tRange := DispatchHelper.Create(ATarget.PropertyGet('Range', ['A1']));
  tRange.InvokeMethod('PasteSpecial', []);
end;

function TExcel_Demo.AddWorksheet(AName: String; AWorkSheets: DispatchHelper): DispatchHelper;
begin
  Result := DispatchHelper.Create(AWorkSheets.InvokeMethod('Add', []));
  Result.PropertyPut('Name', [AName]);
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 13:44:09 | 显示全部楼层
你的代码测试过了?  我怎么在sRange := DispatchHelper.Create(ASource.PropertyGet('Range', ['A1', 'C8']));  句话 报错
回复 支持 反对

使用道具 举报

发表于 2008-6-17 13:47:00 | 显示全部楼层
报什么错啊?
截图看看吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 14:07:39 | 显示全部楼层
Exception     失败
回复 支持 反对

使用道具 举报

发表于 2008-6-17 14:33:36 | 显示全部楼层
截个图给我看看吧。
回复 支持 反对

使用道具 举报

发表于 2008-7-7 09:27:52 | 显示全部楼层
楼主还有问题不,没问题就结贴了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 19:50 , Processed in 0.039076 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表