zoukankan      html  css  js  c++  java
  • C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)

    上次做了以Excel文件为数据源,进行数据导入,今天,给大家分享一下如何将内存中的datatable以文件流的方式导出为Excel文件,而且个人觉得这个方法非常不错,高效,简单。

    技术要点:1.创建文件流,用于写最终的文件StreamWriter sw = new StreamWriter(fileName, false,Encoding.GetEncoding("gb2312"));

    2.使用  StringBuilder类把数据组合为长字符串插入到excel文件中,
    sb.Append(dt.rows[i][j].ToString() + "\t");
    注 意,可不能漏了"\t" 这个是非常重要的! 因为c# "\t"就等于 键盘上的Tab  [朋友们可以试试:打开新的txt然后输入1按Tab,输入2按Tab,输入3按Tab保存,然后打开excel文件  把刚刚保存的txt文件拉进去打开你就发现原来。这样写的话1 2 3 会分别在每个单元格上的了。所以上面才使用 "\t"连起来数据库出来的那堆数据,这样一次性导进去,他们就会按照每个单元格来填充!]

    废话不多说了,直接上code。

    需要引用:
    using System.IO;

    publicvoid WriteExcel(DataSet ds, string path)
            {
               
    try
                {

                    StreamWriter sw
    =new StreamWriter(path, false,Encoding.GetEncoding("gb2312"));
                    StringBuilder sb
    =new StringBuilder();
                   
    for (int k =0; k < ds.Tables[0].Columns.Count; k++)
                    {
                        sb.Append(ds.Tables[
    0].Columns[k].ColumnName.ToString() +"\t");
                    }
                    sb.Append(Environment.NewLine);

                   
    for (int i =0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        
     for (int j =0; j < ds.Tables[0].Columns.Count; j++)
                        {
                            sb.Append(ds.Tables[
    0].Rows[i][j].ToString() +"\t");
                        }
                        sb.Append(Environment.NewLine);//每写一行数据后换行
                    }
                    sw.Write(sb.ToString());
                    sw.Flush();
                    sw.Close();//释放资源
                    MessageBox.Show(
    "已经生成指定Excel文件!");
                }
               
    catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }           
            }

  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/dogxuefeng/p/2439089.html
Copyright © 2011-2022 走看看