在Delphi中使用Interface而不使用Variant控制Microsoft Excel

此文背景:
  最近,我想通过Interface完全控制数据排版格式导出到Excel。不愿意使用Variant是因为Variant操作慢
,编码时需清晰Excel对象层次结构,调试不方便。

摸索过程:
  基本的操作简单,我搞不定的就是PageSetup与选定一列或一行。别看下面代码简单,我可是花了一天半时
间看,搜,问(太菜,惭愧中...)。

此文目的:
  数据共享并期望数据共享。

procedure AutoExcelByIntf;
var
  R: Range;
  LCID: Integer;

 // 这才是正确的类型,否则怎么也找不到PageSetup
 B: _Workbook;
  S: _Worksheet;
begin
  ...

  
  LCID := GetUserDefaultLCID;
  B := XlApp.Workbooks.Add(EmptyParam, LCID);

  // 两种方法一个样
  // S := B.Sheets[1] as _WorkSheet;
  S := B.Sheets.Item[1] as _WorkSheet;


  // 页面设置
  S.PageSetup.LeftMargin := 150; // 其他不再一一列举
  ...

 

 // 第一列与第一行文本格式设置
  // 设为Text不至于3.1515926535897932384626被截成3.14159265358979
  // 注:Excel最多65536行,IV列

  // XlApp.Range['A1', 'A65536'].NumberFormat := '@'; // 不能容忍此笨办法
 // XlApp.Range['A1', 'IV1'].NumberFormat :=
'@';    // 虽然可以达到目的
 
  R := XlApp.Range['A1', 'A1'];
  R.EntireColumn.NumberFormat :=
'@';
  R.EntireRow.NumberFormat :=
'@';

  ...

  // 选定一百行与一百列
  // R := XlApp.Range['A1', 'CV100']; // 不能容忍此笨办法
  // R.Select;                        // 虽然可以达到目的
  R := XlApp.Cells;
  R := R.Range_[R.Item[1, 1], R.Item[100, 100]];
  R.Select;
end;

谢谢大家砸砖头!:-)


  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值