datagrid数据导入到excel的问题
代码如下:
public void ToExcel(System.Web.UI.Control ctl,string FileName)
{
System.Text.StringBuilder colHeaders=new System.Text.StringBuilder () ,Header_Name =new System.Text.StringBuilder ();
HttpContext.Current.Response.Charset ="GB2312";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.UTF7;
HttpContext.Current.Response.ContentType ="application/ms-excel";/****image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword****/
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+FileName+".xls");
ctl.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
//写标题
colHeaders.Append("");
colHeaders.Append("\t");
colHeaders.Append("\t");
colHeaders.Append("友阿集团水、电房租等费扣款表");
colHeaders.Append("\n");
HttpContext.Current.Response.Write(colHeaders);
//写表头
Header_Name.Append("\n");
Header_Name.Append("\t");
Header_Name.Append("数据月份:2006-01-10");
Header_Name.Append("\t");
Header_Name.Append("\t");
Header_Name.Append("所属部门:公司总部");
Header_Name.Append("\n");
//写数据
HttpContext.Current.Response.Write(Header_Name);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
我的问题是,表头不能换行,标题也不能换行,请问是什么原因?
为什么/t和/n没有生效?
问题点数:50、回复次数:17Top
1 楼wangwenhong1000(乖乖兔)回复于 2006-02-10 14:56:33 得分 0
怎么没人回答呀?分数不够吗?Top
2 楼jerrie_1()回复于 2006-02-10 15:06:21 得分 5
试试把"\n"改成"<br>"Top
3 楼wangwenhong1000(乖乖兔)回复于 2006-02-10 15:12:08 得分 0
不行呀,大哥,改成"<br>"后,全部都是乱码了Top
4 楼yuhonglai(哈哈)回复于 2006-02-10 15:31:09 得分 5
VB.NET: VbCrLfTop
5 楼wangwenhong1000(乖乖兔)回复于 2006-02-10 15:41:42 得分 0
yuhonglai(哈哈) ,大哥,什么意思呀?小弟不明白Top
6 楼jerrie_1()回复于 2006-02-10 15:42:10 得分 15
自己看看!
……
da.Fill(ds,"table1");
DataTable dt=ds.Tables["table1"];
StringWriter sw=new StringWriter();
sw.WriteLine("自动编号,姓名,年龄");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
}
sw.Close();
Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
对方法一,二补充一点,如果你希望导出的是xls文件分隔符用\t就可以了,不要用逗号
代码修改如下:
sw.WriteLine("自动编号\t姓名\t年龄");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["ID"]+"\t"+dr["vName"]+"\t"+dr["iAge"]);
}
Top
7 楼wangwenhong1000(乖乖兔)回复于 2006-02-10 21:25:16 得分 0
还是不行呀,不知道为什么?就是不换行,各位大哥们,帮我想想办法呀Top
8 楼wangwenhong1000(乖乖兔)回复于 2006-02-10 21:50:00 得分 0
cw.WriteLine("\t友阿集团水、电房租等费扣款表");
cw.WriteLine("\t所属部门:公司总部");
cw.Close();
HttpContext.Current.Response.Write(cw);
在excel里面,数据在一行,一个单元格里面,各位大哥帮我想想办法呀Top
9 楼chnking(kent)回复于 2006-02-10 22:19:39 得分 5
将内容组合成html的table的标签输出,html的table的<td>单元会输出成excel的单元格,你试试Top
10 楼wangwenhong1000(乖乖兔)回复于 2006-02-11 08:34:22 得分 0
chnking(kent) ,我对html一点都不懂,能说的详细一点吗?Top
11 楼wangwenhong1000(乖乖兔)回复于 2006-02-11 11:20:20 得分 0
没有人有个完整的解决方法吗?Top
12 楼wangwenhong1000(乖乖兔)回复于 2006-02-11 21:22:07 得分 0
哎,还等一天,如果没人回复,结贴算了。Top
13 楼purplesunshine(紫色阳光)回复于 2006-02-11 22:34:59 得分 5
帮你顶下~~Top
14 楼chnking(kent)回复于 2006-02-13 21:34:00 得分 5
换行,加一个回车符:
colHeaders.Append((char)13);Top
15 楼chnking(kent)回复于 2006-02-13 21:34:47 得分 5
单元之间的分割用逗号Top
16 楼szh3210(/+/=〆)回复于 2006-02-13 22:52:47 得分 5
http://singlepine.cnblogs.com/articles/305843.htmlTop
17 楼wangwenhong1000(乖乖兔)回复于 2006-02-15 13:44:30 得分 0
还是搞不定,结了算了Top




