zoukankan      html  css  js  c++  java
  • 入门者初试 Cell(华表)结合C#的应用

    本次内容主要包括
    1.Cell(华表)与VS.NET中常用报表 的 对比参照
    2.简单的Cell(华表)在C#中的示例

    因工作需要,现开始接触Cell(华表),用该国产报表软件进行报表开发。
    和水晶报表及ReportServices等可以在服务器端进行操作的报表不同,
    Cell(华表)是需要JavaScript或VBScript在客户端进行操作。

    Cell对照VS自带的报表的常用组成如下               

    VS        Cell
    Report1.rdlc  Cell1.cll   报表模板(或框架)文件 用以控制报表的显示格式
    DataSet1.xsd   XMLDOM   报表数据源 Cell(华表)主要处理客户端的XMLDOM   XMLDOM可以通过Ajax的方式从服务器端调得
    ReportViewer1 Cell的<Object>对象  加载在相关页面 用以显示报表

    从上面可以看出,三者中的不同是数据源
    VS的可以在服务器端进行操作
    Cell的却只能在客户端进行数据操作

    如何从服务器端取得数据到客户端台 可以参看
    xmlHTTP xmlDOC 与 C#中DataSet的结合 实现AJAX简单示例

    有了对比后 就有了一个大概的了解
    接下来进行一个具体实例

    主要代码示例如下

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        
    <title>Cell(华表)</title>
        
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        
    <script type="text/javascript" language="javascript">
            
    function cellReg()
            
    {
                
    //华表注册
                document.form1.Cellweb1.Login( "**公司","","注册ID""注册码" );
            }

        
    </script>
        
        
    <script  type="text/javascript" language="javascript" >
            
    function btn_Query()
            

                
    // 发送xmlHttp请求到服务器端
                var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                xmlhttp.open(
    "GET","Default2.aspx",false,"","");
                xmlhttp.send();
                
                
    // 从服务器得到处理后的xml对象
                if(xmlhttp.readyState==4)
                
    {
                    
    var xmldom = new ActiveXObject("Microsoft.XMLDOM");
                    xmlhttp.responseXML.createProcessingInstruction(
    "xml"," version=\"1.0\" encoding=\"gb2312\"");
                    
    //xmldom 就是Cellweb1的数据源
                    xmldom = xmlhttp.responseXML.documentElement;
                    
                    
    //Cellweb1 载入模板E:\001.cll
                    //也可以以HTTP://Localhost等的服务器的相对路径形式打开 
                    document.form1.Cellweb1.OpenFile("E:\\001.cll","");
                    
                    
    //如果一页显示不完 可以多载入几个模板页面 使其和第一页 是同样的模板
                    for(var i=0;i<1;i++)
                    
    {
                        document.form1.Cellweb1.AppendSheetFromFile(
    "E:\\001.cll",0,1);
                        
    //注意AppendSheetFromFile("E:\\001.cll",0,1)
                        //中 的0,1 是指模板E:\\001.cll中的第1页开始数 共数1页
                        //这样 也就是载入模板的第1 页,
                        //如果是0,2 就是载入模板的第1和2页面;
                        
                        
    //改变当前表页的名称
                        document.form1.Cellweb1.SetSheetLabel(document.form1.Cellweb1.GetCurSheet(),"第二页");
                    }

    //                //也可以直接插入新的空白页面 而不是载入模板页面
    //
                    for(var i=0;i<2;i++)
    //
                    {
    //
                        var TotalSheets = document.form1.Cellweb1.GetTotalSheets();
    //
                        document.form1.Cellweb1.insertSheet(TotalSheets,1);
    //
                    }
            
                    
    //设置相关属性
    //
                    document.all.Cellweb1.S(1,1,0,"2006");
                    document.all.Cellweb1.Readonly= true;
    //                document.all.Cellweb1.ShowGridLine(0,document.all.Cellweb1.GetCurSheet);
    //
                    document.all.Cellweb1.ShowSideLabel(0,document.all.Cellweb1.GetCurSheet);
    //
                    document.all.Cellweb1.ShowTopLabel(0,document.all.Cellweb1.GetCurSheet);
    //
                    document.all.Cellweb1.ShowSheetLabel(0,document.all.Cellweb1.GetCurSheet);
                    
                    
    // 通过xmldom操作结果
                    var length = xmldom.getElementsByTagName("OrderID").length;                
                    
    var dataOrderID=xmldom.getElementsByTagName("OrderID");
                    
    var dataCustomerID=xmldom.getElementsByTagName("CustomerID");
                     
                        
    for(var i=0;i<length;i++)
                        
    {
                            
    if(i>50)
                            
    {
                                document.form1.Cellweb1.SetCellString(
    2,3+i-51,1,dataOrderID[i].text);
                                document.form1.Cellweb1.SetCellString(
    3,3+i-51,1,dataCustomerID[i].text); 
                            }

                            
    else
                            
    {
                                document.form1.Cellweb1.SetCellString(
    2,3+i,0,dataOrderID[i].text);
                                document.form1.Cellweb1.SetCellString(
    3,3+i,0,dataCustomerID[i].text);
                            }

                        }

                }

            }
            
    </script>


    <script type="text/javascript" language="javascript">
        
        
    function btn_Edit()
        
    {
            document.all.Cellweb1.WorkbookReadonly
    = false;
        }

        
        
    function btn_PrePrint()
        
    {
            document.all.Cellweb1.PrintPreview(
    true,document.all.Cellweb1.GetCurSheet);
        }

        
        
    function btn_Print()
        
    {
            document.all.Cellweb1.PrintSheet(
    false, document.all.Cellweb1.GetCurSheet);
        }

        
        
    function btn_Save()
        
    {
            document.all.Cellweb1.SaveFile();
        }

        
        
    function btn_SetPrint()
        
    {
            document.all.Cellweb1.PrintPageSetup();
        }

        
    </script>


    </head>
    <body onload="cellReg()">
        
    <form id="form1" runat="server">
                
    <table width="100%">
                    
    <tr>
                        
    <td height="50px">
                        
    <INPUT id="btnQuery" type="button" value="查询" LANGUAGE="javascript" onclick="return btn_Query()">&nbsp;
                        
    <INPUT id="btnEdit" type="button" value="编辑" LANGUAGE="javascript" onclick="btn_Edit()">&nbsp;
                        
    <INPUT id="btnPrePrint" type="button" value="列印预览" LANGUAGE="javascript" onclick="btn_PrePrint()">&nbsp;
                        
    <INPUT id="btnPrint" type="button" value="列印" LANGUAGE="javascript" onclick="btn_Print()">&nbsp;
                        
    <INPUT id="btnSave" type="button" value="保存" LANGUAGE="javascript" onclick="btn_Save()">&nbsp;
                        
    <INPUT id="btnSetPrint" type="button" value="打印设置" LANGUAGE="javascript" onclick="btn_SetPrint()">&nbsp;
                        
    </td>
                    
    </tr>
                    
    <tr>
                        
    <td>
                    
    <OBJECT id="Cellweb1" style="Z-INDEX: 102; LEFT: 24px; WIDTH: 536px; POSITION: absolute; TOP: 80px; HEIGHT: 272px"
                        classid
    ="clsid:3F166327-8030-4881-8BD2-EA25350E574A">
                        
    <PARAM NAME="_Version" VALUE="65536">
                        
    <PARAM NAME="_ExtentX" VALUE="14182">
                        
    <PARAM NAME="_ExtentY" VALUE="7197">
                        
    <PARAM NAME="_StockProps" VALUE="0">
                    
    </OBJECT>
                        
    </td>
                    
    </tr>
                
    </table>
        
    </form>
    </body>
    </html>
  • 相关阅读:
    RabbitMQ修改端口号和心跳时间
    RabbitMQ常用命令行
    机票分页存储过程!
    Sql Server随机取数据
    Entity framewok 如何实现多条记录作为一条取出, for xml path如何实现
    AJAX请求时status返回状态明细表 readyState的五种状态
    最小化到托盘,右键退出
    post注入及提权思路
    MySQL提权之user.MYD中hash破解方法
    鸡肋提权之变态root利用
  • 原文地址:https://www.cnblogs.com/freeliver54/p/578668.html
Copyright © 2011-2022 走看看