在项目开发过程中经常会遇到数据导出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. Java用于取得当前日期相对应的月初,月末,季初,季末,年初,年末时间

    package com.zrar.date; import java.util.Calendar; /** * * 描述:此类用于取得当前日期相对应的月初,月末,季初,季末,年初,年末,返回值均为St ...

  2. 【干货】国外程序员整理的 C++ 资源大全

    关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz发起和维护. 内容包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard ...

  3. 转:ORACLE的JDBC连接方式:OCI和THIN

    oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...

  4. [转载]hao123军事频道首页JQ焦点图

    适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. *本作品由[站长素材]收集整理,转载请注明出处! 下载地址

  5. codeforces 430 A Points and Segments (easy)

    题意:给出n个点,m个区间,需要给这些点涂上蓝色或者红色,使得每个区间里面的点的红色的点的个数与蓝色的点的个数的差值小于1 唉,题目的标题就标注了一个easy= = 最开始做的时候对点还有区间都排序了 ...

  6. Codeforces 447 C DZY Loves Sequences【DP】

    题意:给出一列数,在这个序列里面找到一个连续的严格上升的子串,现在可以任意修改序列里面的一个数,问得到的子串最长是多少 看的题解,自己没有想出来 假设修改的是a[i],那么有三种情况, 1.a[i]& ...

  7. 微信公共服务平台开发(.Net 的实现)5-------解决access_token过期的问题(转)

    因为access_token,在以后的高级功能里面会经常用到,所以这里不得不这里对前面所讲解的access_token改造一下.另外需要说明的是access_token是变化的,有自己的周期,官方解释 ...

  8. 解读 Windows Azure 存储服务的账单 – 带宽、事务数量,以及容量

    经常有人询问我们,如何估算 Windows Azure 存储服务的成本,以便了解如何更好地构建一个经济有效的应用程序.本文我们将从带宽.事务数量,以及容量这三种存储成本的角度探讨这一问题. 在使用 W ...

  9. 【J2EE性能分析篇】JVM参数对J2EE性能优化的影响

    一切J2EE应用都是基于JVM的,那么对于JVM的设置和监控,成为J2EE应用程序性能分析和性能优化的必然手段.今天Sincky和大家交流该话题.这里以Tomcat环境为例,其它WEB服务器如Jbos ...

  10. Python [Leetcode 345]Reverse Vowels of a String

    题目描述: Write a function that takes a string as input and reverse only the vowels of a string. Example ...