C#中 导入和导出Excel的方法
using System.Data; using System.Data.OleDb; /// <summary> /// Excel转为DataTable /// </summary> /// <param name="ExcelName"></param> /// <returns></returns> public static DataTable ExcelToDataTable(string filePath) { string strCon = "Provider = Microsoft.ACE.OLEDB.12.0 ;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;'";// IMEX=1为导入模式 OleDbConnection olecon = new OleDbConnection(strCon); olecon.Open(); DataTable dt = olecon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" }); ]["TABLE_NAME"].ToString();//获取Excel表名 OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [" + sheetName + "]", strCon); DataTable mydt = new DataTable(); myda.Fill(mydt); olecon.Close(); return mydt; }
/// <summary> /// DataTable导出Excel /// GridView作为中间数据格式转换用途 /// </summary> /// <param name="page">Page对象</param> /// <param name="columns">导出数据源</param> /// <param name="dt">导出显示列与对应数据列,Key:Excel列名,Value:数据源列名</param> /// <param name="fileName">导出文件名,无需带后缀</param> public static void GridViewToExcel(Page page, DataTable dt, Dictionary<string, string> columns, string fileName) { || columns == ) { return; } if (string.IsNullOrEmpty(fileName.Trim())) { fileName = "DataToExcel"; } DataTable temp = new DataTable(); foreach (KeyValuePair<string, string> item in columns) { temp.Columns.Add(item.Key); } foreach (DataRow dr in dt.Rows) { DataRow drs = temp.NewRow(); foreach (KeyValuePair<string, string> item in columns) { drs[item.Key] = dr[item.Value]; } temp.Rows.Add(drs); } GridView gv = new GridView(); gv.DataSource = temp; gv.AllowPaging = false; gv.EnableViewState = false; gv.DataBind(); StringWriter strWriter = new StringWriter(); HtmlTextWriter htmlWriter = new HtmlTextWriter(strWriter); page.Response.Clear(); page.Response.Buffer = true; page.Response.Charset = "GB2312"; page.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312"); page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); page.Response.ContentType = "application/ms-excel"; gv.RenderControl(htmlWriter); page.Response.Write(strWriter.ToString()); page.Response.End(); }
/// <summary> /// DataTable导出Excel,自定义Html Table格式 /// </summary> /// <param name="page">Page对象</param> /// <param name="dt">DataTable</param> /// <param name="columns">导出显示列与对应数据列,Key:Excel导出列名,Value:数据源列名</param> /// <param name="fileName">导出文件名,无需带后缀</param> public static void ToExcel(Page page, DataTable dt1, Dictionary<string, string> columns, string fileName) { || columns == ) { return; } if (string.IsNullOrEmpty(fileName.Trim())) { fileName = "DataToExcel"; } page.Response.Clear(); page.Response.Buffer = true; page.Response.Charset = "GB2312"; page.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312"); page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); page.Response.ContentType = "application/ms-excel"; page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); System.Text.StringBuilder builder = new System.Text.StringBuilder(); builder.Append("<html xmlns:x=\"urn><head>\n"); builder.Append("<meta http-equiv=\"Content-Language\" content=\"zh-cn\"><meta http-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\"></head>"); builder.Append("<table border=1 style=\"vnd.ms-excel.numberformat:@\"><tr>"); foreach (KeyValuePair<string, string> item in columns) { builder.Append("<th>" + item.Key + "</th>"); } builder.Append("</tr>"); foreach (DataRow item in dt1.Rows) { builder.Append("<tr>"); foreach (KeyValuePair<string, string> kv in columns) { if (IsDateTime(item[kv.Value].ToString())) builder.Append("<td style=\"vnd.ms-excel.numberformat:yyyy-MM-dd\">" + item[kv.Value] + "</td>"); else builder.Append("<td>" + item[kv.Value] + "</td>"); } builder.Append("</tr>"); } builder.Append("</table>"); page.Response.Write(builder.ToString()); page.Response.Flush(); page.Response.End(); }
C#中 导入和导出Excel的方法的更多相关文章
- Java中导入、导出Excel
原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已 ...
- 我是陌生人 Java中导入、导出Excel
我是陌生人 Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是: ...
- [转]Java中导入、导出Excel
原文地址:http://blog.csdn.net/jerehedu/article/details/45195359 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样 ...
- 在mvc4中上传、导入和导出excel表方法总结
通过excel的导入导出练习,使用NPOI组件还是方便一点,所有下面就以NPOI下的导入导出给出实例,通过网页导入excel表,首先上传,再导入数据到库,这里为了方便就不导入到库中了,直接拿到数据.导 ...
- asp.net中导出Excel的方法
一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...
- Java中使用poi导入、导出Excel
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- 前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件
在之前的文章中,我们为大家分别详细介绍了在JavaScript.React中使用SpreadJS导入和导出Excel文件的方法,作为带给广大前端开发者的"三部曲",本文我们将为大家 ...
- 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; ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)
ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...
随机推荐
- 关于execel单元格中的数字变成文本(左上角带绿色三角形标志)的办法
对于很多软件,需要将数字变成文本,才能导入到该系统当中.在excel当中,如果数字是以文本的形式存储,在左上角是带有绿色的三角形标志的.如果对于大批量数据,操作方法如下:1将目标列数据copy到记事本 ...
- Python: 拷贝函数签名
使用场景有很多,比如C API在Python下很多都变成了(*args, **kwargs)的参数,这时候可能需要为其添加一个更严格签名来约束参数. 查了许多资料,能有效的拷贝函数签名貌似只能通过动态 ...
- idea启动tomcat失败,1099端口被占用
今天遇到一个问题,当使用idea启动一个tomat服务的时候,报错:不能连接本地1099端口. /Users/liqiu/soft/develop/apache-tomcat-/bin/catalin ...
- AX 与Citrix打印机问题
国外文章,抄个链接,备查 http://blogs.msdn.com/b/axsupport/archive/2010/07/06/ax-2009-citrix-amp-terminal-server ...
- 控制反转(Ioc)和依赖注入(DI)
控制反转IOC, 全称 “Inversion of Control”.依赖注入DI, 全称 “Dependency Injection”. 面向的问题:软件开发中,为了降低模块间.类间的耦合度,提倡基 ...
- SGU 422 Fast Typing(概率DP)
题目大意 某人在打字机上打一个字符串,给出了他打每个字符出错的概率 q[i]. 打一个字符需要单位1的时间,删除一个字符也需要单位1的时间.在任意时刻,他可以花 t 的时间检查整个打出来的字符串,并且 ...
- java---Swing界面开发总结
一.java的图形界面 1.awt java.awt jdk1.4之前推出的图形界面,用c/c++编写,跨平台性不好 2.swing javax.swing jdk1.4时推出的图形界面,跨平 ...
- MyBatis知多少(16)MyBatis映射
之前我们详细地讨论了MyBatis背后的设计理念以及iBATIS框架是如何产生的.也说明了MyBatis是一个混合型解决方案,它从处理关系数据库的其他不同方法那里借鉴了许多思想.那么MyBatis到底 ...
- Windows上使用clang编译
- 先自己从源代码 (http://llvm.org/releases/) 编译llvm和clang,或者直接安装clang for Windows - 测试过使用cygwin (https://cy ...
- Windows Phone后台音乐播放本地代理实现讨论
前一篇文章讨论的wp平台音乐播放的一些遇到的问题,经过苦思冥想和多方参考安卓实现:发现我们可以考虑一种本地代理的思想来完成我们的边听边存,并且流畅拖动进度条.希望大家一起讨论.可以下载我的代码一同研究 ...