导出Excel问题,能使DataGrid导出的Excel比较美观?
我参考了几种导出Excel的方法:
1、DataGrid导出Excel
用此种方法导出的Excel,打开后有内容的能很好的显示,没内容就是白白一片,有什么好方法能使导出的excel美观,即有带线的Excel
2、调用Excel的COM组件
此种方法,速度慢了点,同时又有杀Excel进程的问题
3、还有其他的方法,我没试过,不懂效果怎么样
有办法是用第一种方法导出的Excel更加美观吗??
问题点数:100、回复次数:11Top
1 楼blackhero(黑侠客)回复于 2006-03-10 18:54:23 得分 10
第三方控件FarPointTop
2 楼lhx1977(清水无鱼)回复于 2006-03-10 18:56:08 得分 10
我用的是com导出的方式,慢死了。
Top
3 楼morality(业精于勤,行成于思!)回复于 2006-03-10 20:34:24 得分 10
我是用的 com 组件,速度感觉还可以!Top
4 楼ljhkim6()回复于 2006-03-10 20:50:42 得分 10
使用摸板EXCEL就可以啊
Top
5 楼jianyi0115(随意)回复于 2006-03-10 20:52:31 得分 10
1、DataGrid导出Excel
是不是调用DataGrid的RenderControl方法?
先要设置好DataGrid的样式,Border , GridLine ...Top
6 楼cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com)回复于 2006-03-11 00:47:03 得分 25
com的话仅仅是管理员用,一次两次还没问题,如果普通用户谁都能点“导出”,并且数据又常常变动难以长期Cache,那效率就成问题了。
如果你觉得DataGrid不好,可以自己写<table>的生成代码,自己控制表格有关的一切样式。Top
7 楼chenxi6713(番茄)回复于 2006-03-11 09:01:28 得分 10
ljhkim6(龙成啊少)说的对,用摸板EXCEL,那样你想怎么花哨就怎么花哨。Top
8 楼jinseyd(金色約定)回复于 2006-03-11 09:07:23 得分 15
http://blog.csdn.net/deadshot123/archive/2006/02/22/606126.aspxTop
9 楼alwfm(银翼之风)回复于 2006-03-13 09:21:23 得分 0
to jianyi0115(随意):
没错是调用服务端控件的RenderControl()方法,对服务端的控件,比如DataGrid可以设置相关的样式,但是在DataGrid之外的区域,输出的就是白茫茫的一片了,覆盖掉的Excel的样式了。
to cat_hsfz(http://cathsfz.sitesled.com):
用Com的方法确实会变得很慢,而且会有杀Excel进程的麻烦,用<table>方法也会产生我上述说的问题,好像只要调用控件输出的Excel,控件区域的内容可以很好显示,但控件之外的区域就是白色的一片了。
to blackhero(黑侠客)
FarPoint 控件是免费的吗?
Top
10 楼alwfm(银翼之风)回复于 2006-03-13 16:55:03 得分 0
没人回答吗?自己顶一下Top
11 楼alwfm(银翼之风)回复于 2006-03-13 16:58:16 得分 0
我现在换了一种方法,用datatable 导出数据,有什么办法可以设置导出的Excel字体的大小、颜色???
代码如下:
private void OutputExcelThree(DataTable dt)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strName, System.Text.Encoding.UTF8) + "(" + HttpUtility.UrlEncode(QDateText, System.Text.Encoding.UTF8) + ")" + ".xls");
string colHeaders= "", ls_item="";
int i=0;
DataRow[] myRow=dt.Select("");
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for(i=0;i<dt.Columns.Count;i++)
colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
//colHeaders +=dt.Columns[i].Caption.ToString() +"\n";
colHeaders += "\n";
////向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach(DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < dt.Columns.Count; i++)
ls_item += row[i].ToString() + "\t";
//ls_item += row[i].ToString() + "\n";
ls_item += "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item="";
}
resp.End();
}Top




