在福州出差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数据内容进行解析处理。
分享到:
相关推荐
- **Excel文件导入导出**:支持Excel文件的无缝导入导出,便于数据交换和备份。 - **自定义公式与汇总**:用户可自定义计算公式,自动计算汇总数据,提升了数据处理能力。 - **统计与分析**:具备综合统计和分析功能...
1. 数据导入导出:支持多种格式的数据导入和导出,如CSV、Excel、数据库文件等。 2. 数据处理:提供丰富的统计函数和分析工具,例如平均值、标准差、趋势分析等。 3. 图形绘制:能够生成各种图表,如折线图、柱状图...
5. **兼容性**:与多种数据格式(如CSV、XML、Excel XLSX)的兼容性,方便数据导入导出。 6. **集成**:它可以无缝集成到各种.NET框架的应用程序中,如WinForms、WPF等。 描述中提到的“解压安装即可”,意味着这个...
最后,我们关注一下压缩包中的“华表CELL”文件。这可能是华表5.1的工作簿文件,包含了用户的电子表格数据。打开这类文件需要有相应的软件支持,如华表5.1本身或其他兼容的电子表格应用。 总之,华表5.1是一款功能...
这款插件支持多种数据源,包括数据库、XML、JSON等,使得数据的导入导出更加便捷。 华表插件的核心特性包括: 1. **高性能渲染**:能够在大量数据下保持流畅的用户体验,支持动态加载和虚拟化技术,减少内存占用,...
2. 数据绑定:支持多种数据源,如数据库、Excel文件等,方便用户将数据直接导入报表,实现动态数据展现。 3. 样式设置:提供丰富的样式模板,可自定义字体、颜色、边框等样式,满足个性化需求。 4. 表格交互:支持...
Cell插件的更新,让软件在数据导入导出的便捷性、复杂数据的图表呈现以及高级公式的应用上得到了加强,这无疑提升了用户在数据处理方面的灵活性和高效性。而Cell组件的升级,则确保了软件在核心计算、数据存储和表格...
通过这个组件,用户可以轻松地实现数据的导入、导出、查询、统计和分析,极大地提升了工作效率。 在功能方面,cell5.2组件具有以下几个关键点: 1. **高性能计算**:cell5.2支持大规模数据的快速计算,处理速度...
Cell组件,也被称为华表组件,是报表开发领域中的一个重要软件,它提供了一系列强大而实用的功能,使得创建、编辑和展示报表变得更为便捷。 在描述中提到的"做报表的利器",暗示了Cell组件3.2在报表制作方面具有...