.NET下Excel报表的打印
说明:这是一个实验的小例子,在实际项目中使用时,一般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报表的打印的更多相关文章
- ASP.NET打印EXCEl报表技术总结
序言:我们在做企业项目或者一些管理系统的时候往往会用到导出到excel报表这项功能,下面我介绍的是用windows自带的excel来打印 首先必须引入:Interop.Excel.dll.Intero ...
- 10、借助POI实现Java生成并打印excel报表(1)
10.1.了解 Apache POI 实际开发中,用到最多的是把数据库中数据导出生成报表,尤其是在生产管理或者财务系统中用的非常普遍.生成报表格式一般是EXCEL或者PDF .利用Apache PO ...
- ASP环境下轻松实现报表的打印 (转)
作者:zcg2000 一.前言 ASP在电子商务上应用广泛,报表的处理又有一些麻烦.本文介绍了在ASP中利用 本人写的Report Server Page脚本解释器实现报表的显示.打印. 二.准备工作 ...
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- 关于Web报表FineReport打印的开发应用案例
报表打印是报表使用和开发过程中经常碰到的问题,这里汇总了关于Web报表开发打印功能的一些典型应用案例,以应用最广泛的FineReport为例. 案例一:java直接调用报表打印 当java后台定义定时 ...
- 在.NET中使用EPPlus生成Excel报表 .
--摘抄自:http://blog.csdn.net/zhoufoxcn/article/details/14112473 在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的 ...
- poi导出Excel报表多表头双层表头、合并单元格
效果图: controller层方法: /** * * 导出Excel报表 * @param request * @return * */ @ ...
- C# 对Excel文档打印时的页面设置
1.对打印页面的朝向,页宽,页高进行设置 参考源码[1] using Excel = Microsoft.Office.Interop.Excel; Excel.Application tmpExce ...
- [原创]Devexpress XtraReports 系列 7 创建Drill-Down(向下钻取)报表
昨天发表了Devexpress XtraReports系列第六篇[原创]Devexpress XtraReports 系列 6 创建并排报表,今天我们继续. 今天的主题是创建Drill-Down报表. ...
随机推荐
- AngularJS 监控对象属性:$watch和$digest
监控对象属性:$watch和$digest $watch和$digest是相辅相成的.两者一起,构成了Angular作用域的核心:数据变化的响应.如果你学习过WPF,并基于WPF使用过一些MVVM框架 ...
- [git]使用GPG签名你的commit
概述 GPG是一种加密算法,现在github支持commit使用GPG加密,从而保证提交的commit在传输的过程中没有被篡改. 一.生成GPG密钥 什么是GPG:阮一峰的GPG教程 安装GPG:br ...
- Java 常用字符串操作总结
1. String转ASCII码 public static String stringToAscii(String value) { StringBuffer sbu = new StringBuf ...
- python反转字符串(简单方法)及简单的文件操作示例
Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...
- [SQL] Oracle基础语法
1.安装: oracle11g server 这里的口令为sys和system的密码.(10版本以前默认用户会有系统默认密码.) Oracle 11g 默认用户名和密码 oracle11g clien ...
- 对Mathsapp的测试以及找bug
组员博客地址: 练思明 卓嘉炜:http://www.cnblogs.com/luoliuxi/ 何宇明:http://www.cnblogs.com/40heyuming/ 团队贡献分: 练思明:2 ...
- C#设计模式——职责链模式(Chain Of Responsibility Pattern)
一.概述 在软件开发中,某一个对象的请求可能会被多个对象处理,但每次最多只有一个对象处理该请求,对这类问题如果显示指定请求的处理对象,那么势必会造成请求与处理的紧耦合,为了将请求与处理解耦,我们可以使 ...
- Requested registry access is not allowed(不允许所请求的注册表访问权)
尝试创建自定义事件日志时,将会收到“Requested registry access is not allowed(不允许所请求的注册表访问权)”错误消息 EventLog.CreateEventS ...
- HTML5标准简介
最近前端的群都蛮热闹的,但我发现多数讨论的是javascript和css相关的问题,仿佛大家在努力创建各种交互.样式的时候,忘却了这一切的基础 – HTML. 其实我很喜欢HTML,觉得这个语言远比X ...
- linq order by charindex 排序 按给定字符串顺序排序
//list=list.OrderBy(ee => SqlFunctions.CharIndex("书记,主任,支部委员,村委委员,系统工作人员", ee.ZhiWu)).T ...