几本闲书

   :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  5 Posts :: 0 Stories :: 22 Comments :: 0 Trackbacks

公告

昵称:rico
园龄:4年10个月
粉丝:0
关注:0

搜索

 
 

积分与排名

  • 积分 - 4847
  • 排名 - 13500

最新评论

最近做出版发行系统用到这块.
所以张罗了一个简单解决方案。
说它简单,是因为未对Excel做什么处理。
public void datasetToExcel1(string fileName)
        
{
            DataSet ds 
= (DataSet)this.Cache["DataSet"];
            DataTable dt
=ds.Tables[0];

            System.IO.StringWriter sw
=new System.IO.StringWriter(); 
            sw.WriteLine(
"姓名\t公司\t投递地址\t邮编\t份数\t手机\t电话"); 
            
foreach(DataRow dr in dt.Rows) 
            

                sw.WriteLine(dr[
"pSubscriberName"]+"\t"+dr["pSubscriberCompany"]+"\t"+dr["pSubscriberAddress"]+"\t"+dr["pSubscriberPost"]+"\t"+dr["pMagazineShareNum"]+"\t"+dr["pSubscriberPhone"]+"\t"+dr["pSubscriberTel"]); 
            }
 
            sw.Close(); 
            Response.AddHeader(
"Content-Disposition""attachment; filename="+System.Web.HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)+".xls"); 
            Response.ContentType 
= "application/ms-excel"
            Response.ContentEncoding
=System.Text.Encoding.GetEncoding("GB2312"); 
            Response.Write(sw); 
            Response.End();
        }
这里要注意的是fileName 必须进行转换,不然下载的文件名是乱码。
posted on 2007-04-10 10:58 rico 阅读(2473) 评论(12) 编辑 收藏

Feedback

#1楼2007-04-10 11:33大豆男生      
不错
 回复 引用 查看   
#2楼2007-04-10 11:45ekinyang
不是真正的操作Excel,实际上是把服务器端的dataset的内容放到了一个*.xls文件中,然后用Excel打开而已。作者可以看看真正的Excel编码和用你的方法导出的Excel编码。
 回复 引用   
这种格式叫CSV格式~~,CSV也可以使用excel打开,但不是excel中els的格式
 回复 引用 查看   
#4楼[楼主]2007-04-10 14:36小赵      
了解了一下。CSV格式的文档如果以EXCEL开启,由于计算机档案数据转换的原因,会将其CRC之数值改做科学记号方式储存,而造成档案中的CRC值发生错误。
不知道我这种方式生成的*.xls文档会出现值错误不?
 回复 引用 查看   
#5楼2007-04-10 16:37Wuya      
这个方法很快捷,实用。
不过和写HTML TABLE然后取个xls的名字一样都是伪EXCEL文件。

如果直接用oledb数据库连接来写xls文件能得到真正的xls格式,不过有很多很多的限制。
 回复 引用 查看   
拿来糊弄不懂行的客户是很好用的,如果不需要在导出的Excel做很复杂的操作的话,这样子也没有什么不好的
 回复 引用 查看   
#7楼2007-04-10 18:46aJAXu      
我也是这么做的:)
 回复 引用 查看   
觉得不错,以后会经常来博客园学习学习的
 回复 引用   
#9楼2007-04-11 00:19deerchao      
@小赵
用"括起来看上去像数值或日期等特殊格式,但实际上是字符串的字段,Excel就会以字符串的形式处理相应的数据。

被括起来的内容里,如果有",需要换成""。
 回复 引用 查看   
太棒了!:)
 回复 引用   
呵呵不错呀
 回复 引用   
#12楼2007-04-11 11:30∈鱼杆      
我是直接绑定DataGrid,将DataGrid 的Html 输入的
 回复 引用 查看