本次内容主要包括
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()">
<INPUT id="btnEdit" type="button" value="编辑" LANGUAGE="javascript" onclick="btn_Edit()">
<INPUT id="btnPrePrint" type="button" value="列印预览" LANGUAGE="javascript" onclick="btn_PrePrint()">
<INPUT id="btnPrint" type="button" value="列印" LANGUAGE="javascript" onclick="btn_Print()">
<INPUT id="btnSave" type="button" value="保存" LANGUAGE="javascript" onclick="btn_Save()">
<INPUT id="btnSetPrint" type="button" value="打印设置" LANGUAGE="javascript" onclick="btn_SetPrint()">
</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>
<!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()">
<INPUT id="btnEdit" type="button" value="编辑" LANGUAGE="javascript" onclick="btn_Edit()">
<INPUT id="btnPrePrint" type="button" value="列印预览" LANGUAGE="javascript" onclick="btn_PrePrint()">
<INPUT id="btnPrint" type="button" value="列印" LANGUAGE="javascript" onclick="btn_Print()">
<INPUT id="btnSave" type="button" value="保存" LANGUAGE="javascript" onclick="btn_Save()">
<INPUT id="btnSetPrint" type="button" value="打印设置" LANGUAGE="javascript" onclick="btn_SetPrint()">
</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>