C#中 导入和导出Excel的方法
2013-06-19 16:12
435 查看
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" }); string sheetName = dt.Rows[0]["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) { if (page == null || dt == null || dt.Rows.Count <= 0 || columns == null || columns.Count <= 0) { 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) { if (page == null || dt1 == null || dt1.Rows.Count <= 0 || columns == null || columns.Count <= 0) { 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的方法
- 详讲:C#快速导出多个sheet到excel的两种方法(Cell和Range方法), 解决了(导入时外部表不是预期的格式)
- C# 操作EXCEL 类 可以实现导入导出功能 折腾了好长时间 现在两种方法显示出来
- C#导入导出Excel数据的两种方法
- C#导入导出EXCEL
- C#开发的高性能EXCEL导入、导出工具DataPie(支持MSSQL、ORACLE、ACCESS,附源码下载地址)
- PHP导入导出Excel方法
- C#操作Excel(导入导出)
- (转)C#导出数据到EXCEL方法谈
- C#导出数据到EXCEL方法谈
- 从SQL Server中导入/导出Excel的基本方法
- PHP导入导出Excel方法
- 在C#中关于excel的导入和导出操作
- C#导出数据到Excel中方法总结
- C#实现Excel的导入与导出《转》
- C#导出Excel的方法
- C#使用NPOI导入Excel的方法详解
- c#.Net:Excel导入/导出之NPOI 2.0简介
- 导入Excel和导出Excel的简单方法与程序处理方法,使用Excel程序读写Excel ,实现Excel的多个 Sheets读写并导出
- C#操作Excel导入导出