`

华表Cell文件导入导出

阅读更多

    在福州出差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数据内容进行解析处理。

 

分享到:
评论
2 楼 firecrow 2010-12-07  
很精彩 学习了
1 楼 skcmm 2010-03-22  
好东西 学习了

相关推荐

    华表cell帮助手册

    cell帮助手册 华表cell中文帮助手册

    华表cell组件帮助手册

    Cell5.1产品分Cell组件5.1和Cell插件5.1两个姐妹产品,它们是北京用友华表软件技术有限公司在长期开发实践的基础上推出的功能强大、技术成熟的报表二次开发工具。 Cell组件(Activex 控件,扩展名为OCX)主要适用于...

    用友华表CELL插件Demo_cellweb.zip

    用友华表CELL插件Demo_cellweb

    用友华表CELL插件Demo

    用友华表CELL插件Demo 用友华表的CELL插件是一款基于ActiveX技术的解决中国式报表显示和打印的第三方控件, 和其它第三方ActiveX控件一样,用友华表CELL插件只能运行在客户端,只能使用JAVASCRIPT、VBSCRIPT客户端...

    华表Cell应用-ProductList

    在IE中使用华表Cell插件的例子展现数据和汇总的例子 http://blog.csdn.net/greatghoul/archive/2010/03/20/5398545.aspx

    用友华表Cell插件

    用友华表Cell插件是国内技术领先拥有广泛客户群的商业报表组件,有700多个编程接口,实现报表自定义,报表显示、打印预览、打印,图表,公式,自定义函数、资源本地化等强大功能,能够完全读写Excel文件。...

    CELL插件、华表插件、可打印、导出文本、导出Excel

    用来实现报表的功能、 可打印、导出txt、 导出Excel、 很方便、

    华表Cell组件方法大全

    华表组件方法大全,比较详细,大家可以参考一下。本人JAVA/DELPHI都经常参考的文档。

    用友华表cell插件

    华表cell开发插件及设计工具,用户可自定义报表。Cell的单元格显示是非常丰富的多 种多样,包括子字符串、数值、日期、 时间、百分比、货币等,在显示一些较复杂的业 务数据时,经常需要用 到多层表头.

    华表 Cell5.3.9.16.exe

    cell 插件用于开发b/s结构程序,使用asp, asp.net, jsp, vbscript, javascript等语言开发,可以在浏览器中直接打印报表(非ie打印),带有国际化数字签名,让用户使用更方便,更安全。

    用友华表Cell组件加速辽河油田电算化进程

    计划投资信息管理系统是为辽河油田计划经营处开发的一套集生产统计和计划管理于一体的管理...在该系统中,用友华表Cell报表工具主要应用于构建基础数据录入,对于习惯于Excel操作的用户无须再次培训,上手非常容易。

    用友华表Cell组件进驻汽车零配件销售管理系统

    用友华表Cell组件是一个优秀的报表开发工具,对于软件开发公司,减轻程序员工作量的同时,将报表完美呈现方便客户打印,为中国式复杂报表提供最有效的解决办法。

    用友华表Cell

    用友华表破解版cell内含使用帮助,软件官方地址http://hb.ufida.com.cn/

    用友华表Cell插件5.3.9.15

    Java制表插件,可以有效的让Java代码和打印机工作

    华表CELL演示

    Cell表格控件的演示文件,主要介绍其功能应用方面。

    [主机域名]用友华表CELL插件Demo_cellweb.zip源码ASP.NET网站源码打包下载

    [主机域名]用友华表CELL插件Demo_cellweb.zip源码ASP.NET网站源码打包下载[主机域名]用友华表CELL插件Demo_cellweb.zip源码ASP.NET网站源码打包下载[主机域名]用友华表CELL插件Demo_cellweb.zip源码ASP.NET网站源码...

    用友华表的CELL插件

    用友华表的CELL插件是一款基于ActiveX技术的解决中国式报表显示和打印的第三方控件, 和其它第三方ActiveX控件一样,用友华表CELL插件只能运行在客户端,只能使用JAVASCRIPT、VBSCRIPT客户端语言操纵控件,进行直接...

    Cell组件5.3.9.16版本

    用友华表Cell组件5.3.9.16 用友华表Cell组件5.3.9.16

    用友华表CELL插件

    用友华表CELL插件可以用于asp.net和jsp各种b/s程序

Global site tag (gtag.js) - Google Analytics