使用了一段时间的FineReport 后,公司又改用华表Cell了,便宜嘛。刚换到Cell时,是无比的痛苦,用惯了好的,真还有点曾经沧海难为水的感觉,Cell的Web插件只能在IE下使用(华表Cell的网页插件在IE8中无法显示的问题 ),这和FineReport比,就太逊色了。不过客户基本上都是IE的粉,也没有什么兼不兼容的问题,就是开发报表时,效率大打折扣,但也总比纯手写强百倍。

 

    我学习时,总有做些笔记的习惯,本文其实就是我学习华表的例子,一个简单得汇总表。

 

最终效果

华表Cell应用 - 在IE中使用华表Cell插件 | #华表Cell #报表

 

    一个只有四条记录的产品列表,并计算每个产品的总价,和所有产品的总数量及单价总和(算这两个玩意儿似乎没有什么意思,只是为了练习而已)。

 

建立报表模板

    提前设计好表样可以减少很多编码量,因为此例中数据条数固定,所以连汇总公式也放在了报表模板里面。

 

    用设计器“超级报表”(名字很炫)新建一张报表,保存为“product-list.cll”,并设计表样如下:

 

华表Cell应用 - 在IE中使用华表Cell插件 | #华表Cell #报表

 

  1. 设置C2到C6的单元格格式为数值型,不保留小数。
  2. 设置D2到D6及E2到E6的单元格格式为数值型,保留两位小数
  3. 设置En的公式为Cn*Dn     (2≤n≤5)
  4. 设置C6的公式为SUM(C2:C5)
  5. 设置D6的公式为SUM(D2:D5)
  6. 设置E6的公式为SUM(E2:E5)
  7. 删除多余的行和列

在网页中嵌入报表

    要在网页中使用Cell模板,请确保已经正确安装了华表Cell插件

 

    建立一个HTML页面product-list.html,内容如下:

 

<html>
<head>
<title>产品列表</title>
<script type="text/javascript">
window.onload = function() {
    // 使用报表模板
    Cell.OpenFile('product-list.cll', '');
    
    // 添加数据
    Cell.S(1, 2, 0, 'A1001');
    Cell.S(2, 2, 0, '产品1');
    Cell.D(3, 2, 0, '120');
    Cell.D(4, 2, 0, '98');
    
    Cell.S(1, 3, 0, 'A1002');
    Cell.S(2, 3, 0, '产品2');
    Cell.D(3, 3, 0, '435');
    Cell.D(4, 3, 0, '998');
        
    Cell.S(1, 4, 0, 'A1003');
    Cell.S(2, 4, 0, '产品3');
    Cell.D(3, 4, 0, '42');
    Cell.D(4, 4, 0, '1998');
        
    Cell.S(1, 5, 0, 'A1004');
    Cell.S(2, 5, 0, '产品4');
    Cell.D(3, 5, 0, '35');
    Cell.D(4, 5, 0, '9998');    
    
    // 重新计算所有公式
    Cell.CalculateAll();
    // 显示网格线
    Cell.ShowGridLine(1, 0);
    // 隐藏水平和垂直滚动条
    Cell.ShowHScroll(0, 0);
    Cell.ShowVScroll(0, 0);
    // 隐藏表页标签
    Cell.ShowSheetLabel(0, 0);
    // 隐藏行列标签
    Cell.ShowTopLabel(0, 0);
    Cell.ShowSideLabel(0, 0);
    // 单元格A1获取焦点
    Cell.MoveToCell(1, 1);
    // 禁止修改数据
    Cell.ProtectSheet(0, '');
}
</script>
</head>
<body>
<OBJECT id="Cell" classid=clsid:3F166327-8030-4881-8BD2-EA25350E574A  
    style="HEIGHT: 111px; WIDTH: 418px"></OBJECT> 
</body>
</html>
 

    注意:

  • 如果单元格的数据为数值型且参与计算,添加数据时一定要添加为数值类型,否则计算结果会受影响。
  • 数据添加完后,一定要执行下CalculateAll()方法,以确保所有公式都被重新计算,从而可以得到正确的汇总值。
  • 要禁止用户直接编辑数据,需要执行ProtectSheet()方法来锁定报表。

相关文章: