在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数据格中 展开
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数据格中 展开
展开全部
乱码问题改成
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,并且能够直接显示在浏览器里
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,并且能够直接显示在浏览器里
展开全部
可以导出到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();有好几种重载方式,其中有一种就是选择编码的.
应该可以,我写文本分割器时遇到过这类问题,呵呵
祝你好运啦!
你把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();有好几种重载方式,其中有一种就是选择编码的.
应该可以,我写文本分割器时遇到过这类问题,呵呵
祝你好运啦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询