博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]C# 导出数据到Excel模板中
阅读量:7296 次
发布时间:2019-06-30

本文共 1984 字,大约阅读时间需要 6 分钟。

本文转自:

今天做报表的时候遇到了多表头的问题,而且相应的报表的格式都一样。所以就采用了报表模板的方式来进行。

第一步:在开发的当前项目中引入:Microsoft.Office.Interop.Excel;System.Reflection;命名空间。

第二步:获取要导出的数据;

第三步:创建一个Excel 应用程序:

//需要添加 Microsoft.Office.Interop.Excel引用   Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

如果,app = null ,则代表服务器上“服务器上缺少Excel组件,需要安装Office软件”;

第四步:设置app属性,及其进行如下操作:

app.Visible = false;  app.UserControl = true;  Microsoft.Office.Interop.Excel.Workbooks workbooks = app.Workbooks;  Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(Server.MapPath("~/Template.xlsx")); //加载模板  Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;  Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1); //第一个工作薄。  if (worksheet == null)      return;  //工作薄中没有工作表.

第五步:根据获得的数据,进行数据的插入(到Excel模板中);

//写入数据,Excel索引从1开始。            for (int i = 1; i <= rowCount; i++)            {                int row_ = 2 + i;  //Excel模板上表头和标题行占了2行,根据实际模板需要修改;                int dt_row = i - 1; //dataTable的行是从0开始的。                 worksheet.Cells[row_, 1] = i.ToString();                worksheet.Cells[row_, 2] = dt.Rows[dt_row]["姓名"].ToString();                worksheet.Cells[row_, 3] = dt.Rows[dt_row]["学号"].ToString();            }

第六步:设置已导入的数据的样式:

//调整Excel的样式。            Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3", worksheet.Cells[rowCount + 2, 8]);            rg.Borders.LineStyle = 1; //单元格加边框。            worksheet.Columns.AutoFit(); //自动调整列宽。

第七步:对已导出好的Excel报表进行保存到服务器,以便进行下载。

//Missing 在System.Reflection命名空间下。            string savaPath = "~/Temp/T1_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";            workbook.SaveAs(Server.MapPath(savaPath), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

详细请看

转载地址:http://haynm.baihongyu.com/

你可能感兴趣的文章
Windows Phone笔记(3)触摸简介
查看>>
Django使用心得(二)
查看>>
13个JavaScript图表图形绘制插件
查看>>
面状县级行政区划转地级行政区划,并关联属性字段
查看>>
用Session和唯一索引字段实现通用Web分页功能
查看>>
升级 Visual Studio 2015 CTP 5 的坑、坑、坑
查看>>
Windows下进程间通信及数据共享
查看>>
盒子端 CSS 动画性能提升研究
查看>>
企业安全建设之搭建开源SIEM平台(上)
查看>>
外企面试官们爱提的十个问题
查看>>
【Connection Events】【BLE】【原创】
查看>>
用户空间与内核空间数据交换的方式(9)------netlink【转】
查看>>
TDD Tip:方法内部New出来的对象如何Mock
查看>>
JQuery 选择器
查看>>
EXTJS学习系列提高篇:第二十五篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--右键菜单篇...
查看>>
Android -- 再来一发Intent
查看>>
使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...
查看>>
node.js调试
查看>>
集成学习原理小结
查看>>
中国的程序员们是否要声援微软小冰?
查看>>