关于用友华表Cell插件代码

本文介绍了一个使用 ASP.NET 和 SQL 进行数据检索、处理及报表展示的应用实例。该应用从数据库中获取实时数据,并通过 Cell 控件将数据以报表的形式展现出来,同时还实现了查询、编辑、打印预览等功能。

以下是cs

 

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Text;
using System.Collections;

public partial class index : System.Web.UI.Page
{
    public DataSet ds;
    public ArrayList arr;
    public string xuhao = "";
    public string nodeid = "";
    public string sensor = "";
    public string unit = "";
    public string placement = "";
    public string status = "";
    public string value = "";
    public string save_time = "";
    public string startTime = "";
    public string endTime = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            getValue();
        }
    }

    public void getValue()
    {
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["connectionstr"]);
        con.Open();
        string sql = "select id,node_id,sensor_name,unit,placement,case status when 0 then '正常' else '报警' end status,[value],";
        sql = sql + "save_time,starttime,endtime from m_realvalue200901";

        SqlDataAdapter da = new SqlDataAdapter(sql, con);
        ds = new DataSet();
        da.Fill(ds, "m_realvalue200901");
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            xuhao += ds.Tables[0].Rows[i]["id"].ToString()+",";
            nodeid += ds.Tables[0].Rows[i]["node_id"].ToString()+",";
            sensor += ds.Tables[0].Rows[i]["sensor_name"].ToString()+",";
            unit += ds.Tables[0].Rows[i]["unit"].ToString()+",";
            placement += ds.Tables[0].Rows[i]["placement"].ToString() + ",";
            status += ds.Tables[0].Rows[i]["status"].ToString() + ",";
            value += ds.Tables[0].Rows[i]["value"].ToString() + ",";
            save_time += ds.Tables[0].Rows[i]["save_time"].ToString() + ",";
            startTime += ds.Tables[0].Rows[i]["startTime"].ToString() + ",";
            endTime += ds.Tables[0].Rows[i]["endTime"].ToString() + ",";
        }
        GC.Collect();
    }

    /// <summary>
    /// 填充arraylist
    /// </summary>
    public void GetList()
    {
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["connectionstr"]);
        con.Open();
        string sql = "select * from m_realvalue200901";
        SqlDataAdapter da = new SqlDataAdapter(sql, con);
        ds = new DataSet();
        da.Fill(ds, "m_realvalue200901");
        arr = new ArrayList();
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            arr.Add(ds.Tables[0].Rows[i][0].ToString());
        }
    }

    /// <summary>
    /// 此处是读取数据
    /// </summary>
    /// <returns></returns>
    public DataSet GetDS()
    {
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["connectionstr"]);
        con.Open();
        ds = new DataSet();
        DataTable dt = new DataTable();
        string sql = "select * from m_realvalue200901";
        SqlDataAdapter da = new SqlDataAdapter(sql, con);
        da.Fill(dt);
        if (dt.Rows.Count > 0)
        {
            ds.Tables.Add(dt);
        }
        else
        {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "tishi", "<script language=javascript>alert('没有查到数据!')</script>");
        }
        return ds;
    }

    /// <summary>
    /// 逐行读取
    /// </summary>
    /// <returns></returns>
    public static string GetData()
    {
        string ConStrs = System.Configuration.ConfigurationManager.AppSettings["connectionstr"];
        string Sql = "select * from m_realvalue200901";
        string Result = string.Empty;
        using (SqlConnection Con = new SqlConnection(ConStrs))
        {
            using (SqlCommand Cmd = new SqlCommand(Sql, Con))
            {
                Con.Open();
                DataTable dt = new DataTable();
                using (SqlDataReader Dr = Cmd.ExecuteReader())
                {
                    while (Dr.Read())
                    {
                        Result += Dr[0].ToString() + ";";

                    }
                }
            }
        }
        return Result;
    }
}

===================================================================

<%@ 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.getElementById("cellweb1").Login("", "", "注册ID", "注册码");
        }
    </script>
    <script language="javascript" type="text/javascript">
        function onload() {
            var cell = document.getElementById("cellweb1");
            cell.ShowSideLabel(0, cell.GetCurSheet()); //隐藏横向坐标
            cell.ShowTopLabel(0, cell.GetCurSheet()); //隐藏纵向坐标
        }
    </script>
    
    <script language="javascript" type="text/javascript">
        function getValue() 
        {
          var date = new Date();
          var startdate = date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
          var enddate = date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
          var printdate = date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
          var err = document.all.cellweb1.openfile("<%=ConfigurationSettings.AppSettings["cell"].ToString()%>newCell.cll","");
          if(err == -1)
          {
            alert("模板文件不存在请确认!");
          }
          var cell = document.getElementById("cellweb1");
          
          for (var j = 0; j <= 9; j++) 
          {
             cell.SetCellTextColor(1 + j, 3, cell.GetCurSheet(),1);
          }
          
          cell.SetCellInput(1, -1, cell.GetCurSheet(),5); //设置id列为只读
          
          //填充模板头
          cell.S(1,2,cell.GetCurSheet(),"开始时间:");
          cell.S(2,2,cell.GetCurSheet(),startdate);
          cell.S(3,2,cell.GetCurSheet(),"结束时间:");
          cell.S(4,2,cell.GetCurSheet(),enddate);
          cell.S(5,2,cell.GetCurSheet(),"打印时间:");
          cell.S(7,2,cell.GetCurSheet(),printdate);
          //填充模板头
          
          //填充表头背景颜色
          for(var h = 0;h <= 9;h++)
          {
            cell.SetCellBackColor(1+h,3,cell.GetCurSheet(), 5);
          }
          
          //填充表列名
          cell.S(1,3,cell.GetCurSheet(),"序号");
          cell.S(2,3,cell.GetCurSheet(),"编号");
          cell.S(3,3,cell.GetCurSheet(),"传感器");
          cell.S(4,3,cell.GetCurSheet(),"单位");
          cell.S(5,3,cell.GetCurSheet(),"地点");
          cell.S(6,3,cell.GetCurSheet(),"状态");
          cell.S(7,3,cell.GetCurSheet(),"数值");
          cell.S(8,3,cell.GetCurSheet(),"时间");
          cell.S(9,3,cell.GetCurSheet(),"开始时间");
          cell.S(10,3,cell.GetCurSheet(),"结束时间");
          //填充表列名
          
          var xh = document.getElementById("myxuhao").value;           //id
          var nodeid = document.getElementById("mynodeid").value;      //nodeid
          var sensor = document.getElementById("mysensor").value;      //传感器名
          var unit = document.getElementById("myunit").value;          //单位
          var placement= document.getElementById("myplacement").value; //地点
          var status= document.getElementById("mystatus").value;       //状态
          var value= document.getElementById("myvalue").value;         //值
          var save_time= document.getElementById("mysave_time").value; //保存时间
          var startTime= document.getElementById("mystartTime").value; //开始时间
          var endTime= document.getElementById("myendTime").value;     //结束时间
          
          var str = new Array();
          var str1 = new Array();
          var str2 = new Array();
          var str3 = new Array();
          var str4 = new Array();
          var str5 = new Array();
          var str6 = new Array();
          var str7 = new Array();
          var str8 = new Array();
          var str9 = new Array();          
          
          str = xh.split(",");
          str1 = nodeid.split(",");
          str2 = sensor.split(",");
          str3 = unit.split(",");
          str4 = placement.split(",");
          str5 = status.split(",");
          str6 = value.split(",");
          str7 = save_time.split(",");
          str8 = startTime.split(",");
          str9 = endTime.split(",");
          
          
          for(var i=0;i<str.length;++i)
          {
            cell.S(1,4+i,cell.GetCurSheet(), str[i]);
            cell.S(2,4+i,cell.GetCurSheet(), str1[i]);
            cell.S(3,4+i,cell.GetCurSheet(), str2[i]);
            cell.S(4,4+i,cell.GetCurSheet(), str3[i]);
            cell.S(5,4+i,cell.GetCurSheet(), str4[i]);
            cell.S(6,4+i,cell.GetCurSheet(), str5[i]);
            cell.S(7,4+i,cell.GetCurSheet(), str6[i]);
            cell.S(8,4+i,cell.GetCurSheet(), str7[i]);
            cell.S(9,4+i,cell.GetCurSheet(), str8[i]);
            cell.S(10,4+i,cell.GetCurSheet(), str9[i]);
          }
          cell.ReDraw(); //重新加载报表数据 
        }
    </script>
        
    <script type="text/javascript" language="javascript">
        function btn_Edit() 
        {
            //设置表页为只读
            document.getElementById("cellweb1").WorkbookReadonly = false;
            //设置不支持允许拖动
            document.getElementById("cellweb1").AllowDragdrop = false;
        }
        
        //打印预览
        function btn_PrePrint() 
        {
            document.getElementById("cellweb1").PrintPreview(true, document.getElementById("cellweb1").GetCurSheet);
        }

        //打印
        function btn_Print() 
        {   
            document.getElementById("cellweb1").PrintSheet(false, document.getElementById("cellweb1").GetCurSheet);
        }
        
        //保存
        function btn_Save() 
        {           
            document.getElementById("cellweb1").SaveFile();
        }

        function btn_SetPrint() 
        {
            document.getElementById("cellweb1").PrintPageSetup();
        }

        function fn_Print() 
        {
            if (confirm("确定列印吗")) 
            {
                document.all.btnWonem_tabButtonCtl.style.display = "none";
                window.print();
                return false;
            }
            else 
            {
                return false;
            }
        }    
    </script>

    <style type="text/css">
        .style1
        {
            height: 526px;
        }
        #btnquery
        {
            width: 66px;
        }
        #btnedit
        {
            width: 68px;
        }
        #btnprint
        {
            width: 73px;
        }
        #btnsave
        {
            width: 75px;
        }
    </style>

</head>
<!--onload="cellreg()"-->
<body onload="onload()">
    <form id="form1" runat="server">
    <table width="100%">
        <tr>
            <td height="50px">
                <input id="btnquery" type="button" value="查询"  onclick="return getValue()" />&nbsp;
                <input id="btnedit" type="button" value="编辑" onclick="return btn_Edit()" />&nbsp;
                <input id="btnpreprint" type="button" value="打印预览" onclick="return btn_PrePrint()" />&nbsp;
                <input id="btnsetprint" type="button" value="打印设置" onclick="return btn_SetPrint()" />&nbsp;
                <input id="btnprint" type="button" value="打印" onclick="return btn_Print()" />&nbsp;
                <input id="btnsave" type="button" value="保存" onclick="return btn_Save()" />&nbsp;
                <input type="hidden" name="myxuhao" id="myxuhao" value='<%=xuhao %>' />
                <input type="hidden" name="mynodeid" id="mynodeid" value='<%=nodeid %>' />
                <input type="hidden" name="mysensor" id="mysensor" value='<%=sensor %>' />
                <input type="hidden" name="myunit" id="myunit" value='<%=unit %>' />
                <input type="hidden" name="myplacement" id="myplacement" value='<%=placement %>' />
                <input type="hidden" name="mystatus" id="mystatus" value='<%=status %>' />
                <input type="hidden" name="myvalue" id="myvalue" value='<%=value %>' />
                <input type="hidden" name="mysave_time" id="mysave_time" value='<%=save_time %>' />
                <input type="hidden" name="mystartTime" id="mystartTime" value='<%=startTime %>' />
                <input type="hidden" name="myendTime" id="myendTime" value='<%=endTime %>' />
            </td>
        </tr>
        <tr>
            <td class="style1">
                <object id="cellweb1" style="z-index: 102; left: 14px; width: 95%; position: absolute;top: 70px; height: 100%;" 
                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>

用友华表CELL插件Demo 用友华表CELL插件是一款基于ActiveX技术的解决中国式报表显示和打印的第三方控件, 和其它第三方ActiveX控件一样,用友华表CELL插件只能运行在客户端,只能使用JAVASCRIPT、VBSCRIPT客户端语言操纵控件,进行直接处理客户端数据,而客户的数据都存放在服务器端,这势必要求客户端的ActiveX控件与服务器端进行数据交互. 针对客户端ActiveX控件如何与服务器端进行数据交互,本文介绍了实现客户端与服务器端数据交互必须的两个步骤如下: 1、将客户端CELL插件中的数据上传至服务器端的数据库. 方法:在客户端通过Cell的编程接口SaveToBuffer得到数据保存在XML,使用XMLHTTP技术将数据传至服务器并保存在服务器数据库. 2、将服务器端数据库中的数据显示在客户端的CELL插件中. 方法:连接服务器数据库得到数据,通过Response对象将数据传送到客户端,再利用Cell的编程接口ReadFromBuffer展示在客户端. Cell 插件用于开发B/S结构程序,使用Asp, Asp.net, Jsp, VbScript, JavaScript等语言开发,可以在浏览器中直接打印报表(非IE打印),带有国际化数字签名,让用户使用更方便,更安全。 • 具备Cell组件的所有特色功能,在浏览器中提供报表的显示和打印 • 网络报表界面美观,大大改善了浏览器中报表的输出效果 • 带有国际化数字签名,让用户使用的更安全、更放心 • 可将报表文件另存为华表文件或者Excel文件,从而可以进行进一步加工 • 支持ASP、ASP.Net、JSP、VBScript、JavaScript等语言开发 在开发工具中将Cell插件引入至工程,然后将Cell插件拖至页面中即可开始报表设计。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值