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)//其中path里要包含要创建的Excel文件的名称

{

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

}

}

技术要点: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)//其中path里要包含要创建的Excel文件的名称

{

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

}

}