华表Cell应用 - 在IE中使用华表Cell插件 | #华表Cell #报表
使用了一段时间的FineReport 后,公司又改用华表Cell了,便宜嘛。刚换到Cell时,是无比的痛苦,用惯了好的,真还有点曾经沧海难为水的感觉,Cell的Web插件只能在IE下使用(华表Cell的网页插件在IE8中无法显示的问题 ),这和FineReport比,就太逊色了。不过客户基本上都是IE的粉,也没有什么兼不兼容的问题,就是开发报表时,效率大打折扣,但也总比纯手写强百倍。
我学习时,总有做些笔记的习惯,本文其实就是我学习华表的例子,一个简单得汇总表。
最终效果
一个只有四条记录的产品列表,并计算每个产品的总价,和所有产品的总数量及单价总和(算这两个玩意儿似乎没有什么意思,只是为了练习而已)。
建立报表模板
提前设计好表样可以减少很多编码量,因为此例中数据条数固定,所以连汇总公式也放在了报表模板里面。
用设计器“超级报表”(名字很炫)新建一张报表,保存为“product-list.cll”,并设计表样如下:
- 设置C2到C6的单元格格式为数值型,不保留小数。
- 设置D2到D6及E2到E6的单元格格式为数值型,保留两位小数
- 设置En的公式为Cn*Dn (2≤n≤5)
- 设置C6的公式为SUM(C2:C5)
- 设置D6的公式为SUM(D2:D5)
- 设置E6的公式为SUM(E2:E5)
- 删除多余的行和列
在网页中嵌入报表
要在网页中使用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()方法来锁定报表。