在ASP.NET中,关于SQL导出到EXCEL的问题

//该方法实现将数据导入到Excel文件中,其中的DataTabledt就是你需要将数据写入到Excel中的数据;publicvoidExportExcel(DataTa... //该方法实现将数据导入到Excel文件中,其中的DataTable dt就是你需要将数据写入到Excel中的数据;
public void ExportExcel(DataTable dt, StreamWriter w)
{
try
{
for (int i = 0; i < dt.Columns.Count; i++)
{
w.Write(dt.Columns[i]);
w.Write(' ');
}
w.Write(" ");

object[] values = new object[dt.Columns.Count];
foreach (DataRow dr in dt.Rows)
{
values = dr.ItemArray;
for (int i = 0; i < dt.Columns.Count; i++)
{
w.Write(values[i]);
w.Write(' ');
}
w.Write(" ");
}
w.Flush();
w.Close();
}
catch
{
w.Close();
}
}

protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = db.Createcon();
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand("select * from studentinfo where grade=5 and class=1", con);
DataTable dt = new DataTable();
sda.Fill(dt);

StreamWriter sw = new StreamWriter("d:\\test.xls");

ExportExcel(dt, sw);

}

我的程序能导出数据,但是不正确,EXCEL是2003的,里面的数据都在第一个单元格里面,而且是乱码,不知道怎么指定编码,怎么让数据正确在EXCEL数据格中
展开
 我来答
百度网友5e03f2e
2009-02-11 · TA获得超过306个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:295万
展开全部
乱码问题改成
StreamWriter sw = new StreamWriter("d:\\test.xls",false,System.Text.Encoding.Default);

数据都在第一个单元格的问题,要修正为下面语句
foreach (DataRow dr in dt.Rows)
{
values = dr.ItemArray;
for (int i = 0; i < dt.Columns.Count; i++)
{
w.Write(values[i]);
w.Write('\t'); //修改语句
}
w.Write("\r\n"); //修改语句
}
以上代码均调试通过。

另外不推荐你这样导出excel,因为虽然扩展名是xls,其实内容还是text文件,Excel2007打开时要询问格式问题,而且表格无法拥有丰富的格式。
建议使用微软Office中间件——SOAOffice,语法简洁、功能强大,更加SQL动态产生图文并茂的excel,并且能够直接显示在浏览器里
kxkboy
2009-02-11 · 超过19用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:43.9万
展开全部
可以导出到EXCEL文件中,并且是乱码,说明是数据编码问题.

你把StreamWriter sw = new StreamWriter("d:\\test.xls"); 改成这样:
StreamWriter sw = new StreamWriter("d:\\test.xls", System.Text.Encoding.Default);

w.Write(dt.Columns[i]); 也同样改成: w.Write(dt.Columns[i], System.Text.Encoding.Default);

w.Write();有好几种重载方式,其中有一种就是选择编码的.

应该可以,我写文本分割器时遇到过这类问题,呵呵
祝你好运啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式