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);
            }           
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM