说明:这是一个实验的小例子,在实际项目中使用时,一般Object[,] 对象的数据来源于数据库。

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

.NET下Excel报表的打印的更多相关文章

  1. ASP.NET打印EXCEl报表技术总结

    序言:我们在做企业项目或者一些管理系统的时候往往会用到导出到excel报表这项功能,下面我介绍的是用windows自带的excel来打印 首先必须引入:Interop.Excel.dll.Intero ...

  2. 10、借助POI实现Java生成并打印excel报表(1)

    10.1.了解 Apache POI 实际开发中,用到最多的是把数据库中数据导出生成报表,尤其是在生产管理或者财务系统中用的非常普遍.生成报表格式一般是EXCEL或者PDF .利用Apache  PO ...

  3. ASP环境下轻松实现报表的打印 (转)

    作者:zcg2000 一.前言 ASP在电子商务上应用广泛,报表的处理又有一些麻烦.本文介绍了在ASP中利用 本人写的Report Server Page脚本解释器实现报表的显示.打印. 二.准备工作 ...

  4. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  5. 关于Web报表FineReport打印的开发应用案例

    报表打印是报表使用和开发过程中经常碰到的问题,这里汇总了关于Web报表开发打印功能的一些典型应用案例,以应用最广泛的FineReport为例. 案例一:java直接调用报表打印 当java后台定义定时 ...

  6. 在.NET中使用EPPlus生成Excel报表 .

    --摘抄自:http://blog.csdn.net/zhoufoxcn/article/details/14112473 在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的 ...

  7. poi导出Excel报表多表头双层表头、合并单元格

    效果图: controller层方法: /**     *      * 导出Excel报表     * @param request     * @return     *      */    @ ...

  8. C# 对Excel文档打印时的页面设置

    1.对打印页面的朝向,页宽,页高进行设置 参考源码[1] using Excel = Microsoft.Office.Interop.Excel; Excel.Application tmpExce ...

  9. [原创]Devexpress XtraReports 系列 7 创建Drill-Down(向下钻取)报表

    昨天发表了Devexpress XtraReports系列第六篇[原创]Devexpress XtraReports 系列 6 创建并排报表,今天我们继续. 今天的主题是创建Drill-Down报表. ...

随机推荐

  1. codeforces D. Design Tutorial: Inverse the Problem

    题意:给定一个矩阵,表示每两个节点之间的权值距离,问是否可以对应生成一棵树, 使得这棵树中的任意两点之间的距离和矩阵中的对应两点的距离相等! 思路:我们将给定的矩阵看成是一个图,a 到 b会有多条路径 ...

  2. 免费素材下载:iOS 8 矢量 UI 素材套件

    小伙伴们,苹果终于在今天凌晨推送了 iOS 8 的正式版.虽然该系统并未与 iPhone6 发布会同时亮相,但对于已经提前体验尝鲜过测试版的同学来说并不陌生.iOS 8 几乎每个图标都进行了重新设计, ...

  3. IOS开发UI基础UIImageView属性属性

    UIImageView属性 1.Image 设置图片,默认显示 UIImageView *_imageView = [[UIImageView alloc]init]; _imageView.imag ...

  4. linux内核更新前后配置文件的比较

    说明:这里先给出一个比较的结果,作为记录,后续会给出内核配置差异的详细解释. [root@xiaolyu linux-4.7.2]# diff .config .config_bak  3c3< ...

  5. Eclipse启动报错:A java runtime Environment(JRE) or java Development……的解决办法

    第一种: 解决方法: 系统变量里设置下面: 变量名:JAVA_HOME 变量值:D:\Java\jdk1.8.0_31 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib; 变量名 ...

  6. 2016校招内推 -- 腾讯SNG前端 -- 面试经历

    也是让某湿兄帮忙内推,然后过了四五天,电话打来了 一面: 1.首先是简单的自我介绍 2.你觉得一个前端工程师应该具备什么技能 比如用户体验这个方面他就贵问你具体的例子 3.让你设计一个web站点,假如 ...

  7. C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用

    概述 转自 http://www.cnblogs.com/luomingui/archive/2013/09/19/3329763.html 最近几天一直在关注WinFrom方面的文章 有想着提炼一下 ...

  8. win7局域网里输入正确密码也访问不了其他的机器

    1.本地安全策略-本地策略-安全选项-网络安全:LAN管理器身份验证级别,默认是“没有定义”,更改为“发送LM和NTLM响应! Windows 7系统自带的是一个统安全管理工具--本地安全策略,它可以 ...

  9. 线段树---Atlantis

    题目网址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110064#problem/A Description There are se ...

  10. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...