入门者初试 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>

posted on 2006-12-01 10:34  freeliver54  阅读(5663)  评论(7编辑  收藏  举报

导航