回 帖 发 新 帖 刷新版面

主题:在vf中用代码实现EXCEL数字列汇总

在vf中怎样用代码实现像在excel中实现数据汇总,并在最后一行增加汇总行?

回复列表 (共8个回复)

沙发

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

板凳

非常谢谢moz老师的帮助.由于我vf功力有限,还得请各位帮忙.
我有一个15行20列的excel表,其中有字符型,有数值型,还有日期型,请问各位若在16行,取数值型的列之和,在vf 中有该怎么这段控制性的代码呢??

3 楼

range("A16:E16")="=sum(R[-15]C:R[-1]C)"

4 楼

三年以上困惑的问题也基本解决.在这向moz老师说一声谢谢.
但还得给您添点麻烦.虽然moz老师给出的答案基本达到预期结果,就是还有一点遗憾,就是当在excel中列为日期型类型时,它也按天计算,当为字符类型时,给出的结果为0.
请问题moz老师,怎样处理这个问题,仅使数值型的列求和,或使日期型列的求和结果给出是0也可.

5 楼

不计那一列就不得了?
怎么不计法? 也许可以检测一下哪列是日期。

因为日期本身也是一个数值。如果可以的话,你甚至可以过滤过大的数值。

6 楼

在vf中,请问moz老师,怎样检测excel中哪列是日期?怎么过滤过大的数值?moz老师,我水平有限,问就多一些.因为这些问题一直困惑我多年了

7 楼

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 楼

感谢moz老师,没法给您加分了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册