在项目开发过程中经常会遇到数据导出Excel。如果只是导出数据就好办了。但往往用户会有各种格式要求。加粗、边框、合并单元格、汇总等功能。

以下的方法是基于Excel模版方式写入数据导出的功能。可以最大满足用户的格式需求。可以提前所相应的数据列设置好对齐方式,是否加粗、数据格式、保留小数位。对文本型的数据一定要设置成文本格式,不然像数字型的字符串就会出现类似于3.4E+17这格式。

注意Excel中下标是从1,1开始的。

合并单元格方法:

Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Sheets[1];
Microsoft.Office.Interop.Excel.Range range = ws.get_Range(ws.Cells[x0, y0], ws.Cells[x1, y1]);
range.Merge();

  

单元格增加边框:

Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Sheets[1];
Microsoft.Office.Interop.Excel.Range range = ws.get_Range(ws.Cells[x0, y0], ws.Cells[x1, y1]);
range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
DataTable dt = getdata();//数据来源
string strFileName = Application.StartupPath + "//file//ExportEmployeeSalary.xls"; string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
saveFileDialog1.Filter = "Excel 97-2003(*.xls)|*.xls|Excel 2007-2010(*.xls)|*.xlsx|AllFiles|*.*";
saveFileDialog1.FileName = "工资" + fileName; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook xlBook = excel.Application.Workbooks.Add(strFileName);
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Sheets[1];
Microsoft.Office.Interop.Excel.Range range; int rows = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
rows = i + 4;//从第行开始写数据
ws.Cells[rows, 1] = (i + 1).ToString();//序号
ws.Cells[rows, 2] = dt.Rows[i]["CompanyInfoName"].ToString();//单位名称
ws.Cells[rows, 3] = dt.Rows[i]["EmployeeRealName"].ToString();//姓名
ws.Cells[rows, 4] = dt.Rows[i]["IDCard"].ToString();//身份证号码
ws.Cells[rows, 5] = dt.Rows[i]["AccruedSalary"].ToString();//应发工资
ws.Cells[rows, 6] = dt.Rows[i]["DeductSocial"].ToString();//代扣社保
ws.Cells[rows, 7] = dt.Rows[i]["DeductAccumulation"].ToString();//代扣公积金
ws.Cells[rows, 8] = dt.Rows[i]["DeductTax"].ToString();//代扣个税
ws.Cells[rows, 9] = dt.Rows[i]["DeductOther"].ToString();//代扣其它
ws.Cells[rows, 10] = dt.Rows[i]["GrantBonus"].ToString();//代发奖励
ws.Cells[rows, 11] = dt.Rows[i]["GrantAchievements"].ToString();//代发绩效
ws.Cells[rows, 12] = dt.Rows[i]["GrantdOvertime"].ToString();//代发加班费
ws.Cells[rows, 13] = dt.Rows[i]["GrantOther"].ToString();//代发其他
ws.Cells[rows, 14] = dt.Rows[i]["RealSalary"].ToString();//实发工资
ws.Cells[rows, 15] = dt.Rows[i]["SalaryMonth"].ToString();//工资月份
ws.Cells[rows, 16] = dt.Rows[i]["ReMark"].ToString();//备注
}
range = ws.get_Range(ws.Cells[4, 1], ws.Cells[dt.Rows.Count + 3, 16]);
range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; excel.Visible = false;
excel.DisplayAlerts = false;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string localFilePath = saveFileDialog1.FileName.ToString();
xlBook.SaveCopyAs(localFilePath);
} xlBook.Close();
excel.Quit();
excel = null;
GC.Collect();

  

Excel原格式模版:

-------------------------------------------------------------------------------------------------------------------------------------------------

导出结果数据:

c#中格式化导出Excel数据的更多相关文章

  1. flask使用tablib导出excel数据表

    在网页中常常有导出数据的需求,尤其是一下管理类平台.在flask中要导出excel数据表,通常可以使用xlwt库,创建文件并逐行写入数据,但是使用起来总是感觉很麻烦.tablib库相对操作更加方便. ...

  2. asp.net中导出excel数据的方法汇总

    1.由dataset生成 代码如下 复制代码 public void CreateExcel(DataSet ds,string typeid,string FileName)    {    Htt ...

  3. [转] Asp.Net 导出 Excel 数据的9种方案

    湛刚 de BLOG 原文地址 Asp.Net 导出 Excel 数据的9种方案 简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website ...

  4. 从SQL Server中导入/导出Excel的基本方法(转)

    从sql server中导入/导出 excel 的基本方法 /*=========== 导入/导出 excel 的基本方法 ===========*/ 从excel文档中,导入数据到sql数据库中,很 ...

  5. oracle-sql脚本导出EXCEL数据

    在数据库中,经常有业务人员提出需求导出数据库中的业务数据,而且是每天.每周或每月定时导出.为了方便,可将sql查询的脚本 通过下面脚本来导出EXCEL数据. 1.将查询sql脚本(AAA.sql)放到 ...

  6. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

  7. 前端导出excel数据-jsonToExcel

    咳咳,好久没有写博了... 在工作中遇到了纯前端,将数据导出为excel文件.正文开始: 第一步 安装依赖: npm i xlsx 第二步 写导出函数: import XLSX from 'xlsx' ...

  8. Java中导入导出Excel -- POI技术

    一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实 ...

  9. .NET中导入导出Excel总结

    前一段时间,做了Excle的导入和导出,在此记录开发思路及技术要点,以便在今后开发中参考.                                                        ...

随机推荐

  1. linux 实时时钟(RTC)驱动【转】

    转自:http://blog.csdn.net/yaozhenguo2006/article/details/6820218 这个是linux内核文档关于rtc实时时钟部分的说明,此文档主要描述了rt ...

  2. linux查看某个端口被占用

    如8003 端口 使用命令:netstat -nlptu |awk '{print $4,$7}' | grep 8003 [root[@bogon](/user/bogon) ~]# netstat ...

  3. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  4. open_binary_frm

    参数uchar* head 是已经分配好内存的64个字节的地址 http://mysql.taobao.org/monthly/2015/08/07/ /** *先从.frm文件读取64字节 *第28 ...

  5. C#分页类

    using System.Linq; using System.Collections.Generic; namespace CommonLibrary { public class PagedLis ...

  6. JAVA使用DES加密算法加密解密

    程序中使用了.properties文件作为参数配置文档,好处是灵活配置各项参数 一旦对数据库的一些参数进行了配置,势必涉及数据库的IP,端口,用户名和密码 properties文件全是unicode编 ...

  7. 关闭oom killer

    最近有位 VPS 客户抱怨 MySQL 无缘无故挂掉,还有位客户抱怨 VPS 经常死机,登陆到终端看了一下,都是常见的 Out of memory 问题.这通常是因为某时刻应用程序大量请求内存导致系统 ...

  8. LeetCode Valid Number 有效数字(有限自动机)

    题意:判断一个字符串是否是一个合法的数字,包括正负浮点数和整形. 思路:有限自动机可以做,画个图再写程序就可以解决啦,只是实现起来代码的长短而已. 下面取巧来解决,分情况讨论: (1)整数 (2)浮点 ...

  9. QR二维码(转)

    二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字, ...

  10. mouseevent tips

    关于roll_over 和 mouse_over的区别,这篇文章说明的很清楚,http://zengrong.net/post/1105.htm 全文如下: 在MouseEvent中,ROLL_OVE ...