C#WinForm 使用StreamWriter导出数据成Excel文件。
来源:互联网 发布:归来。知乎 编辑:程序博客网 时间:2024/05/24 06:33
1:导出数据为Excel文件在开发项目时比较常见的一种需求 。以前对于数据量较小的情况使用 Microsoft.Office.Interop.Excel.Workbooks相关类,编写起来也比较麻烦,对于数据量较大的情况,在此与大家共享使用SteamWriter类输出Excel文件的方法。经过具体测试,通过在程序中使用多线程配置该方法,导出300000行+17列的约130M的数据需要31秒左右。
/// <summary> /// 导出文件,使用文件流。该方法使用的数据源为DataTable,导出的Excel文件没有具体的样式。 /// </summary> /// <param name="dt"></param> public static string ExportToExcel(System.Data.DataTable dt, string path) { KillSpecialExcel(); string result = string.Empty; try { // 实例化流对象,以特定的编码向流中写入字符。 StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312")); StringBuilder sb = new StringBuilder(); for (int k = 0; k < dt.Columns.Count; k++) { // 添加列名称 sb.Append(dt.Columns[k].ColumnName.ToString() + "\t"); } sb.Append(Environment.NewLine); // 添加行数据 for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; for (int j = 0; j < dt.Columns.Count; j++) { // 根据列数追加行数据 sb.Append(row[j].ToString() + "\t"); } sb.Append(Environment.NewLine); } sw.Write(sb.ToString()); sw.Flush(); sw.Close(); sw.Dispose(); // 导出成功后打开 //System.Diagnostics.Process.Start(path); } catch (Exception) { result = "请保存或关闭可能已打开的Excel文件"; } finally { dt.Dispose(); } return result; } /// <summary> /// 结束进程 /// </summary> private static void KillSpecialExcel() { foreach (System.Diagnostics.Process theProc in System.Diagnostics.Process.GetProcessesByName("EXCEL")) { if (!theProc.HasExited) { bool b = theProc.CloseMainWindow(); if (b == false) { theProc.Kill(); } theProc.Close(); } } }
B/S 导出:
// 保存错误信息 GridView gv = new GridView(); gv.DataSource = dtError; gv.DataBind(); gv.Attributes.Add("style", "vnd.ms-excel.numberformat:@"); HttpResponse hResponse = this.Response; string fileName1 = "新员工格式验证错误统计" + DateTime.Now.ToString("yyyyMMdd"); hResponse.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName1, System.Text.Encoding.UTF8) + ".xls"); hResponse.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); hResponse.ContentType = "application/ms-excel"; this.EnableViewState = false; StringWriter tw = new StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); gv.RenderControl(hw); hResponse.Write(tw); hResponse.End();
2 0
- C#WinForm 使用StreamWriter导出数据成Excel文件。
- C#WinForm 使用StreamWriter导出数据成Excel文件。
- C#winForm导出excel
- C#Winform导出Excel
- C#Winform导出Excel
- winform 导出excel文件
- [C#]WinForm中DataGrid扩展 - 快速导出Excel文件
- [C#]WinForm中DataGrid扩展 - 快速导出Excel文件
- C#Winform实现高效率导入和导出Excel文件
- WinForm中把DataGrid里面的数据导出成EXCEL文件(VB.net)
- 在winform开发中如何把datagrid里面的数据导出成EXCEL文件
- C#streamwriter写文件
- C#Excel数据导出
- 数据导出excel文件
- C#winform从数据集导出Excel(带指定Excel样式)
- C#winform从数据集导出Excel(带指定Excel样式)
- C#winform从数据集导出Excel(带指定Excel样式) 转+修改
- C#winform从数据集导出Excel(带指定Excel样式) 转+修改
- Codeforces Round #220 (Div. 2)
- MongoDB组合索引的优化
- 利用Java获取本机网卡的MAC地址
- Joomla安装示范数据,永远安装不完的解决方法
- Nova如何配置虚拟机使用Spice+QXL ?
- C#WinForm 使用StreamWriter导出数据成Excel文件。
- PHP 真正多线程的使用
- gdb 打印字符串的全部内容
- Android之向中国天气网发送GET请求获取JSON数据实例
- 菜鸟之学习STM32(一)暂停C51的复习,开始学习STM32
- 浅谈千万级PV/IP规模高性能高并发网站架构
- Codeforces Round #220 (Div. 2)
- 文字省略号
- 年轻时不做会后悔的八件事