delphi操作Excel执行分类汇总 ( 积分: 50 )

  • 主题发起人 主题发起人 jskscxy
  • 开始时间 开始时间
J

jskscxy

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi如何操作Excel执行分类汇总
var
xlApp: Variant;
begin
SaveGrid(DBGridEh1, DBGridEh1.DataSource.DataSet.Name);
try
xlApp := CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
xlApp.Visible := true;
xlApp.workBooks.Open(PublicFunction.FName);
//执行分类汇总
xlApp.Range['F1'].Subtotal(GroupBy:=6, Function:=-4157, TotalList:=10, Replace:=True, PageBreaks:=False, SummaryBelowData:=True);
end;
这样可以执行分类汇总,但只能对第10列进行汇总,实际友好几列
TotalList参数应该怎么写,要汇总的列数不确定
 
搞定了。
 
怎么写啊?学习中。。。发点CODE LOOK下[:D]
 
静态:
TotalList:=Vararrayof([10,11,12]),对10,11,12列汇总
动态:
var
xlApp: Variant;
I, J: Integer;
V: array of Variant;
begin
try
xlApp := CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
try
xlApp.Visible := True;
xlApp.workBooks.Open('C:/Documents and Settings/prod4-03/桌面/Qry职场数量对比.xls');
//==========================================================
J := xlApp.ActiveSheet.UsedRange.Columns.Count - 4; //取得要执行分类汇总的列数

SetLength(V, J); //定义数组V长度为J
for I := Low(V) to High(V) do // 赋值
V := I + 5;

xlApp.Range['D1'].Subtotal(4, -4157, VarArrayOf([V])); //以D列为条件执行分类汇总
SetLength(V, 0); // 释放V内存

这个玩意搞了我好几天....
 
这样做效率太低了,换个思维吧!!!!
 
kingenhn:
是的,这样效率是低,能否说说您的思维...
 
后退
顶部