主题:在vf中用代码实现EXCEL数字列汇总
zhengxinhai
[专家分:30] 发布于 2008-06-18 21:09:00
在vf中怎样用代码实现像在excel中实现数据汇总,并在最后一行增加汇总行?
回复列表 (共8个回复)
沙发
moz [专家分:37620] 发布于 2008-06-18 22:47:00
ex=CREATEOBJECT("excel.application")
ex.Visible= .T.
bx=ex.Workbooks.Add
........................
sx=bx.Sheets(1)
sx.range("A1").currentregion.Sort(sx.Range("A2"),1,,,,,,0,1,.f.,1,1,0)
sx.range("A1").currentregion.Subtotal(1,-4157,2,.T., .F.,.T.)
注:
最后一行第一个参数是分类的列序号
最后一行第三个参数是汇总的列序号
如果要汇总多列,需要参与这一贴: http://bbs.pfan.cn/post-242624.html
板凳
zhengxinhai [专家分:30] 发布于 2008-06-20 20:23:00
非常谢谢moz老师的帮助.由于我vf功力有限,还得请各位帮忙.
我有一个15行20列的excel表,其中有字符型,有数值型,还有日期型,请问各位若在16行,取数值型的列之和,在vf 中有该怎么这段控制性的代码呢??
3 楼
moz [专家分:37620] 发布于 2008-06-21 11:51:00
range("A16:E16")="=sum(R[-15]C:R[-1]C)"
4 楼
zhengxinhai [专家分:30] 发布于 2008-06-22 12:27:00
三年以上困惑的问题也基本解决.在这向moz老师说一声谢谢.
但还得给您添点麻烦.虽然moz老师给出的答案基本达到预期结果,就是还有一点遗憾,就是当在excel中列为日期型类型时,它也按天计算,当为字符类型时,给出的结果为0.
请问题moz老师,怎样处理这个问题,仅使数值型的列求和,或使日期型列的求和结果给出是0也可.
5 楼
moz [专家分:37620] 发布于 2008-06-22 13:38:00
不计那一列就不得了?
怎么不计法? 也许可以检测一下哪列是日期。
因为日期本身也是一个数值。如果可以的话,你甚至可以过滤过大的数值。
6 楼
zhengxinhai [专家分:30] 发布于 2008-06-22 20:36:00
在vf中,请问moz老师,怎样检测excel中哪列是日期?怎么过滤过大的数值?moz老师,我水平有限,问就多一些.因为这些问题一直困惑我多年了
7 楼
moz [专家分:37620] 发布于 2008-06-23 13:08:00
isdate( ) 是否日期类型
isnumeric( ) 是否数值类型
with Excel.Sheels(1)
for i2=1 to 5
if Excel.isnumeric(.cells(16,i2))
.cells(16,i2)="=sum(R[-15]C:R[-1]C)"
endif
endfor
endwith
8 楼
zhengxinhai [专家分:30] 发布于 2008-06-23 20:29:00
感谢moz老师,没法给您加分了.
我来回复