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

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

发表我的评论

取消评论
表情 插代码

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项