在福州出差ing……使用华表Cell和Sybase、Cognos做项目……这段经历被前辈称为地狱历险记,用的sybase是12.5,Cognos是8.1,华表Cell版本,等等,我查一下,哦,是5.2.6.0809……
翻看华表Cell组件的示例程序,官方的例子十分可怕,在浏览器里加载ActiveX控件(这并不可怕,可怕的是),接着调用华表API中的方法SetCellString()来逐个单元格写入数据到ActiveX控件中——这是从Cell文件加载数据到界面的控件。
来说说功能需求,要从Cell文件中读取报表数据,导入到数据库中,看似简单唯美,但依据官方的例子实难完成。
按官方的例子,首先创建Cell组件的ActiveX控件在页面上,假定为
<object id="DCellWeb1" style="left: 0px; width: 100%; top: 0px; height: 900px;"
codebase="CellWeb5.cab#version=5,3,8,0429" classid="clsid:3F166327-8030-4881-8BD2-EA25350E574A" >
<param name="_Version" value="65536" />
<param name="_ExtentX" value="10266" />
<param name="_ExtentY" value="7011" />
<param name="_StockProps" value="0" />
</object>
使用Cell组件打开本地的某个Cell文件,这样Cell文件中的数据就加载到了Cell控件中
document.getElementById("DCellWeb1").openfile("D:\\temp\\test.cll","");
获取Cell控件中的数据内容,代码如下:
var dcell = document.getElementById("DCellWeb1");
var sendTxt = "";
// Sheet页数
var sheetCount = dcell.GetTotalSheets();
for(var sheet=0; sheet<sheetCount; i++){
dcell.SetCurSheet(sheet);
// 获取当前页总列数、行数
var colCount = dcell.GetCols(sheet);
var rowCount = dcell.GetRows(sheet);
// 获取当前页数据区域的起始列数、行数
var leftCol = dcell.GetLeftCol();
var topRow = dcell.GetTopRow();
// 按行、列,获取所有单元格的数据
for (row=topRow; row<rowCount; row++) {
for (col=leftCol; col<colCount; col++) {
var sValue = dcell.GetCellString(col, row, sheet);
if(sValue=="")
sValue=" ";
sendTxt+=sValue;
if(col < colCount - 1)
sendTxt+=",";
}
if(row < rowCount - 1)
sendTxt+="!";
}
}
按上面的方法,逐个单元格遍历数据,而后组装起来,使用Ajax等方式向后台传输即可。但是这样做其实不对,因为日常办公面对的统计表格通常都有200多行,100多列,Sheet页都有20个左右,粗略计算一下,GetCellString方法的调用次数多达40多万次,在IE下跑了一下,大约组装过程需要40秒左右。
放弃这条思路,往如何获取整块数据的思路上去搜索API,由于官方论坛在维护,API文档组织上的问题,查了很久才找到如下2个方法:
SaveToXML
ReadFromXML
用这两个方法可以整体获取或写入Cell控件中的数据内容。示例如下:
// 以xml形式,获取dcell中的内容
var xmlcontent = dcell.SaveToXML('');
// xmlcontent为xml形式组织的数据内容,将这些内容写入到dcell组件中
dcell.ReadFromXML(xmlcontent);
这样就完整的获取了Cell组件中的数据内容,调用效率自然是相当的高,大约同上面的报表数据量,只需要0.2秒左右。剩下来的工作就是将这些内容传递到后台,并使用Dom4j或XStream等工具包对XML数据内容进行解析处理。
分享到:
相关推荐
华表cell插件软件,用于打开华表cll文件及制作
cell帮助手册 华表cell中文帮助手册
案例中的“product-list.cll”文件是华表Cell的报表文件,其中包含了预设的数据结构、样式以及计算规则,是实现数据展示的核心部分。 其次,"product-list.htm"文件则是报表的HTML载体,它将华表Cell的报表内容嵌入...
Cell5.1产品分Cell组件5.1和Cell插件5.1两个姐妹产品,它们是北京用友华表软件技术有限公司在长期开发实践的基础上推出的功能强大、技术成熟的报表二次开发工具。 Cell组件(Activex 控件,扩展名为OCX)主要适用于...
《用友华表CELL插件Demo_cellweb:深入解析与应用》 在信息化时代,企业对数据处理和展示的需求日益增长,用友华表CELL插件应运而生,为企业的报表制作和数据分析提供了强大的支持。本文将深入探讨用友华表CELL插件...
用友华表CELL插件Demo 用友华表的CELL插件是一款基于ActiveX技术的解决中国式报表显示和打印的第三方控件, 和其它第三方ActiveX控件一样,用友华表CELL插件只能运行在客户端,只能使用JAVASCRIPT、VBSCRIPT客户端...
**华表Cell组件方法大全** 华表Cell组件是一款在JAVA和DELPHI开发环境中广泛使用的表格控件,它提供了丰富的功能,使得开发者可以方便地在应用程序中创建、编辑和展示复杂的表格数据。本文将深入探讨华表Cell组件的...
"华表插件"可能是国内某款软件的组件,可能与CELL插件相似,专门针对中国用户的习惯和需求进行优化,提供更符合本土化需求的报表功能。 "可打印"是指该插件具备打印功能,允许用户将报表或数据直接通过打印机输出为...
- **Excel文件导入导出**:支持Excel文件的无缝导入导出,便于数据交换和备份。 - **自定义公式与汇总**:用户可自定义计算公式,自动计算汇总数据,提升了数据处理能力。 - **统计与分析**:具备综合统计和分析功能...
【用友华表Cell插件】是一款专门用于报表设计与开发的强大工具,它为用户提供了一种自定义报表的解决方案。该插件的核心功能是通过丰富的单元格显示方式,支持多种数据类型,包括子字符串、数值、日期、时间、百分比...
用友华表Cell插件是国内技术领先拥有广泛客户群的商业报表组件,有700多个编程接口,实现报表自定义,报表显示、打印预览、打印,图表,公式,自定义函数、资源本地化等强大功能,能够完全读写Excel文件。...
最后,我们关注一下压缩包中的“华表CELL”文件。这可能是华表5.1的工作簿文件,包含了用户的电子表格数据。打开这类文件需要有相应的软件支持,如华表5.1本身或其他兼容的电子表格应用。 总之,华表5.1是一款功能...
Java制表插件,可以有效的让Java代码和打印机工作
用于WEB开发报表统计功能时,显示报表统计数据的华表插件开发API文档。
5. **兼容性**:与多种数据格式(如CSV、XML、Excel XLSX)的兼容性,方便数据导入导出。 6. **集成**:它可以无缝集成到各种.NET框架的应用程序中,如WinForms、WPF等。 描述中提到的“解压安装即可”,意味着这个...
压缩包内包含5.1和5.3版的安装包
【用友华表Cell组件】是专为软件开发设计的一款高效报表开发工具,它能够显著减轻程序员的工作负担,同时提供高质量的报表展示,便于用户打印。对于处理中国式复杂报表,Cell组件提供了强大的解决方案。 在【汽车零...
小编今天给大家带来了用友华表cell插件,它是用友华表软件中的一个重要插件,是国内技术领先拥有广泛客户群的商业报表组件,主要适用于开发windows应用程序,是为商业软件解决实际开发过程中的图表、报表显示,输入...
【压缩包子文件的文件名称列表】中的文件主要用于演示和实现用友华表CELL插件的功能: 1. **Default.aspx**:这是ASP.NET中的默认首页文件,通常包含一些基本的界面元素和导航,可能是用来展示插件的基本使用方法。...