csharp: DataTable export to excel,word,csv etc

http://code.msdn.microsoft.com/office/Export-GridView-to-07c9f836

https://exporter.codeplex.com/

http://closedxml.codeplex.com/

http://epplus.codeplex.com/

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/// <summary>
       /// 塗聚文修改
       /// </summary>
       /// <param name="dt"></param>
       /// <param name="Response"></param>
       /// <param name="filename"></param>
       public static void Convertword(DataTable dt, HttpResponse Response, string filename)
       {
           Response.Clear();
           Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".doc");
           Response.Charset = "utf-8";
           Response.Cache.SetCacheability(HttpCacheability.NoCache);
           Response.ContentType = "application/vnd.word";
           System.IO.StringWriter stringWrite = new System.IO.StringWriter();
           System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
           System.Web.UI.WebControls.GridView dg = new System.Web.UI.WebControls.GridView();
           dg.DataSource = dt;
           dg.DataBind();
           dg.RenderControl(htmlWrite);
           Response.Write(stringWrite.ToString());
           Response.End();
           //HttpContext.Current.ApplicationInstance.CompleteRequest();
 
       }
       /// <summary>
       ///
       /// </summary>
       /// <param name="dt"></param>
       /// <param name="Response"></param>
       /// <param name="filename"></param>
       public static void Convertexcel(DataTable dt, HttpResponse Response, string filename)
       {
 
           Response.Clear();
           Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".xls");//
           Response.Charset = "utf-8";
           Response.Cache.SetCacheability(HttpCacheability.NoCache);
           Response.ContentType = "application/vnd.ms-excel";
           System.IO.StringWriter stringWrite = new System.IO.StringWriter();
           System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
           System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid();
           dg.DataSource = dt;
           dg.DataBind();
           dg.RenderControl(htmlWrite);
           Response.Write(stringWrite.ToString());
           Response.End();
           //HttpContext.Current.ApplicationInstance.CompleteRequest();
 
       }
       /// <summary>
       ///
       /// </summary>
       /// <param name="dataTable"></param>
       /// <param name="Response"></param>
       /// <param name="filename"></param>
       public static void ConvertCSV(DataTable dataTable, HttpResponse Response, string filename)
       {
 
           Response.Clear();
           Response.Buffer = true;
           Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".csv");
           Response.Charset = "utf-8";
           Response.Cache.SetCacheability(HttpCacheability.NoCache);
           Response.ContentType = "Application/x-msexcel";
           StringBuilder sb = new StringBuilder();
           if (dataTable.Columns.Count != 0)
           {
               foreach (DataColumn column in dataTable.Columns)
               {
                   sb.Append(column.ColumnName + ',');
               }
               sb.Append("\r\n");
               foreach (DataRow row in dataTable.Rows)
               {
                   foreach (DataColumn column in dataTable.Columns)
                   {
                       if (row[column].ToString().Contains(",") == true)
                       {
                           row[column] = row[column].ToString().Replace(",", "");
                       }
                       sb.Append(row[column].ToString() + ',');
                   }
                   sb.Append("\r\n");
               }
           }
           Response.Write(sb.ToString());
           Response.End();
           //HttpContext.Current.ApplicationInstance.CompleteRequest();
 
       }

 winform:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/// <summary>
       /// winform
       /// Encoding导出无问题
       /// 涂聚文测试
       /// </summary>
       /// <param name="dgv"></param>
       /// <param name="fileName"></param>
       public static void ExportToCSV(DataGridView dgv, string fileName)
       {
           if (dgv.Rows.Count < 1)
           {
               MessageBox.Show("没有记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
               return;
           }
 
           SaveFileDialog sfDialog = new SaveFileDialog();
           sfDialog.Filter = "CSV文件(*.csv)|*.csv|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
           sfDialog.FilterIndex = 0;
           sfDialog.FileName = fileName;
           if (sfDialog.ShowDialog() == DialogResult.OK)
           {
 
               string strFileName = sfDialog.FileName;
               StreamWriter sw = new StreamWriter(strFileName, false, Encoding.Unicode);
               string strLine = "";
               foreach (DataGridViewColumn col in dgv.Columns)
               {
                   if (col.Visible)
                   {
                       strLine += "\"" + col.HeaderText.Trim().Replace("\"", "\\\"") + "\"" + "\t";
                   }
               }
               strLine = strLine.Substring(0, strLine.Length - 1);
               sw.WriteLine(strLine);
               sw.Flush();
 
               foreach (DataGridViewRow dgvr in dgv.Rows)
               {
                   strLine = "";
                   foreach (DataGridViewCell dgvc in dgvr.Cells)
                   {
                       if (dgvc.Visible)
                       {
                           if (dgvc.Value == null)
                           {
                               strLine += "\t";
                           }
                           else
                           {
                               strLine += "\"" + dgvc.Value.ToString().Trim().Replace("\"","\"\"") + "\"" + "\t";
                           }
                       }
                   }
                   sw.WriteLine(strLine);
                   sw.Flush();
               }
               sw.Close();
               MessageBox.Show(string.Format("数据已成功导出至\n{0}\n文件中!", strFileName), "导出成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
           }
       }

  

posted @   ®Geovin Du Dream Park™  阅读(664)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2010-04-16 T-SQL Pivot Tables(行列转换) in SQL Server 2005/2008
2010-04-16 javascript DOM添加元素,使用节点属性
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示