关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » .NET ».NET中打印Excel报表代码实例

    .NET中打印Excel报表代码实例

    2014-10-02 00:00:00 出处:ITJS
    分享

    1. 实验环境

    开发平台:visual Studio 2010

    测试模板:JBtest

    Excel:Office2007 Excel

    2. 项目所用组件

    为什么选择ASP.NET做打印的功能,因为office和Visual studio同是微软的开发软件,具有良好的兼容性,利用上述.dll组件,可以轻松实现excel模板的导入和excel数据的导出。

    ExcelQuicker.dll动态链接库需要在网上下载,引用到项目中才可以使用。我用的这个版本比较早,版本号是2.2.0.0。现在的更新版本可能修改了一些函数和类的名称,请参考后使用。

    3. webconfig配置

    4.项目结构

    以上是项目的整体结构,其中,测试网页为Default.aspx。Lib目录下的ExcelQuicker.xml为ExcelQuicker组件的配置文档,Message.xml为导入出错时报错的信息。

    5.报表打印

    首先在实现打印的网页后台引用命名空间:using ExcelQuicker.Framework;

    利用ExcelQuicker.Framework空间的相应类提供的接口实现报表的新建

    EQApplication objApp = new EQApplication(strFileName, EQReportFormat.Excel, strTemplate, false);

    EQWorksheet objWS = new EQWorksheet(“报表数据”);

    数据写入到excel文档里类似于VBA编程,具体细节功能请参考代码:Default.aspx.cs

    EQRange range = new EQRange(objData, 11, 5, 15, 5); //从“11行 5列” 到 “22行 5列”

    objWS.Add(range);

    Default.aspx.cs后台主要代码:

    protected void dy_Click1(object sender, EventArgs e)
    {
    string wjm;
    string strTemplate = “JBtest.xls”;//模板文件名称
    Initialize();//调用excel quicker初始化函数
    // string strFileName = Session["yhid"].ToString();
    string strFileName = “wangling”;
    wjm = strFileName;
    wjm = wjm + “_” + strTemplate;
    set_Excel(wjm, strTemplate);//生成并设置此excel表
    Response.Redirect(“..\ExcelQuicker\TempReports\” + wjm);
    }
    public void Initialize()
    {

    EQConfiguration.XmlFileName = HttpRuntime.AppDomainAppPath + “ExcelQuicker\Lib\Message.xml”;
    EQConfiguration.Language = “EN”;
    EQConfiguration.TemporaryFilePath = HttpRuntime.AppDomainAppPath + “ExcelQuicker\TempReports\”;
    EQConfiguration.OutputFilePath = HttpRuntime.AppDomainAppPath + “ExcelQuicker\TempReports\”;
    EQConfiguration.TemplateFilePath = HttpRuntime.AppDomainAppPath + “jb\xls\”;
    }

    void set_Excel(string strFileName, string strTemplate)
    {

    EQApplication objApp = new EQApplication(strFileName, EQReportFormat.Excel, strTemplate, false);
    EQWorksheet objWS = new EQWorksheet(“报表数据”);

    object[,] objData, objData3, objData4, objData5, objData6, objData7;
    objData = new object[5, 1];//用于存放要填充到Excel中的数据

    objData3 = new object[8, 1];

    objData4 = new object[1, 1];
    objData5 = new object[3, 1];

    objData6 = new object[8, 1];
    objData7 = new object[8, 1];

    string ren, ren1, ren2, ren3;
    objData[0, 0] = congye .Text ;//从业人员期末人数
    objData[1, 0] = guanli .Text ;//单位负责人
    objData[2, 0] = zaigang .Text ;//在岗职工
    objData[3, 0] = laowu .Text ;//劳务派遣人员
    objData[4, 0] =qita0 .Text ;//其他从业人员

    ren = “188″ + “ 人”;
    ren1 = “22″ + “ 人”;
    ren2 = “33″ + “ 人”;
    ren3 = “44″ + “ 人”;
    objData4[0, 0] = ren;//直接从事生产经营活动的平均人数
    objData5[0, 0] = ren1;//其中:工程技术人员
    objData5[1, 0] = ren2;//其中:一级建造师
    objData5[2, 0] = ren3;//其中:现场施工人员

    EQRange range = new EQRange(objData, 11, 5, 15, 5); //从“11行 5列” 到 “22行 5列”
    objWS.Add(range);

    EQRange range4 = new EQRange(objData4, 30, 3, 30, 3); //从“11行 5列” 到 “22行 5列”
    objWS.Add(range4);
    EQRange range5 = new EQRange(objData5, 32, 6, 34, 6); //从“11行 10列” 到 “22行 10列”
    objWS.Add(range5);

    objData7[0, 0] = pingjun .Text ;
    objData7[1, 0] =zaigangpj0.Text ;
    objData7[2, 0] = laowupj0.Text ;
    objData7[3, 0] = qitapj.Text ;
    //range7 1-本季 平均人数//
    EQRange range7 = new EQRange(objData7, 16, 5, 19, 5);
    objWS.Add(range7);

    objData3[0, 0] =congyeg.Text ;//从业人员工资总额
    objData3[1, 0] = zaizhig.Text ;//在岗职工工资总额
    objData3[2, 0] = laog .Text ;//劳务派遣人员工资总额
    objData3[3, 0] = qitag.Text ;//其他从业人员工资总额

    EQRange range3 = new EQRange(objData3, 21, 5, 24, 5); //从“11行 10列” 到 “22行 10列”
    objWS.Add(range3);

    objData6[0, 0] = congyepjg.Text ;

    objData6[1, 0] = zaigangpjg.Text ;

    objData6[2, 0] =laowupjg.Text ;

    objData6[3, 0] = qitapjg.Text ;

    EQRange range6 = new EQRange(objData6, 25,5,28, 5);
    objWS.Add(range6);

    //以下填写报送人员信息
    string ryxx = “单位负责人: ” + df.Text + “ 统计负责人:” + xf.Text + ” 填表人:” + tf.Text;

    objData = new object[1, 1];
    objData[0, 0] = ryxx;
    range = new EQRange(objData, 35, 1, 35, 1);
    objWS.Add(range);

    //以下填写表头单位名称

    objData = new object[1, 1];
    objData[0, 0] = “Excel表格数据导出测试”;
    range = new EQRange(objData, 7, 1, 7, 1);
    objWS.Add(range);
    objApp.Add(objWS);

    try
    {
    objApp.Output();
    }
    catch (Exception)
    {
    objApp.Dispose();
    }
    }

    6. 效果截图

    界面上填写数据,把填写的数据导入到对应的excel文档里面

    填写数据后,点击导出excel按钮,出现如图界面

    打印到Excel后的结果

    以上小例子下载:Demo.zip

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。