问题描述
项目中遇见一个问题,需要将数据导出成Excel文件,文件内容格式要和页面table显示的样式保持一致。自己因为方便便采用的是流保存的方式进行导出的。代码如下虽然达到了按照样式保存的效果,但是导出的Excel文件,在电脑上打开编辑保存时会提示,如下问题:保存后还会出现一个Excel的样式文件夹,如果把这个文件夹删除后,整个Excel就不能用了。要想正常使用这个Excel文档,必须在进行编辑之前,先要另存一份Excel后缀的文档,然后使用另存的文档才可以。这样给用户的感觉太不好了。我想各位大神,有没有能遇见过这样的问题的或者有没有更好的办法按照页面table样式导出Excel的。请大家多多指教呀SOS
解决方案
解决方案二:
Response.ContentType="application/ms-excel";//"application/ms-excel";//"application/vnd.ms-excel";Response.Clear();最好在导出之前加一句这个。试试
解决方案三:
tryit:
解决方案四:
你是用WPS打开的吧?用EXCEL打开好像不会有这样的问题。毕竟这样生成的文件不是真正的EXCEL,你可以用记事本打开你的文件看到的其实是HTML代码;但用记事本打开真正的EXCEL却是乱码。
解决方案五:
引用2楼insus的回复:
tryit:
您好,不是打开的问题,我就想是知道的如何通过既要保存页面的table样式,导出的时候还能生成真正的Excel,而不是HTML代码这样的。
解决方案六:
用GridView将数据导出到Excel进行格式化处理//绑定控件导出到Excel设置<tableborder="1"bordercolor="#bed0cd"cellpadding="0"cellspacing="0"><tr><tdstyle="font-weight:bold;font-size:11pt;text-align:center">将GridView中数据导出到Excel并进行格式化处理</td></tr><tr><td><asp:GridViewID="GridView1"runat="server"BackColor="White"BorderColor="#DEDFDE"BorderStyle="None"BorderWidth="1px"CellPadding="4"Font-Size="11pt"ForeColor="Black"GridLines="Vertical"AutoGenerateColumns="False"OnRowDataBound="GridView1_RowDataBound"><FooterStyleBackColor="#CCCC99"/><RowStyleBackColor="#F7F7DE"/><SelectedRowStyleBackColor="#CE5D5A"Font-Bold="True"ForeColor="White"/><PagerStyleBackColor="#F7F7DE"ForeColor="Black"HorizontalAlign="Right"/><HeaderStyleBackColor="#6B696B"Font-Bold="True"ForeColor="White"/><AlternatingRowStyleBackColor="White"/><Columns><asp:BoundFieldDataField="商品ID"HeaderText="商品ID"/><asp:BoundFieldDataField="商品名称"HeaderText="商品名称"/><asp:BoundFieldDataField="商品介绍"HeaderText="商品介绍"/><asp:BoundFieldDataField="商品价格"HeaderText="商品价格"/></Columns></asp:GridView></td></tr><tr><tdstyle="text-align:center"><asp:ButtonID="Button1"runat="server"Font-Size="9pt"OnClick="Button1_Click"Text="导出Excel并格式化"style="border-left-color:#3333ff;border-bottom-color:#3333ff;border-top-style:inset;border-top-color:#3333ff;border-right-style:inset;border-left-style:inset;border-right-color:#3333ff;border-bottom-style:inset"/></td></tr></table>//处理导出protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){bind();}}privatevoidExport(stringFileType,stringFileName){Response.Charset="GB2312";Response.ContentEncoding=System.Text.Encoding.UTF7;Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,Encoding.UTF8).ToString());Response.ContentType=FileType;this.EnableViewState=false;StringWritertw=newStringWriter();HtmlTextWriterhw=newHtmlTextWriter(tw);GridView1.RenderControl(hw);Response.Write(tw.ToString());Response.End();}privatevoidbind(){SqlDataAdaptermyda=newSqlDataAdapter("selecttop10GoodsIDas商品ID,GoodsNameas商品名称,GoodsIntroduceas商品介绍,GoodsPriceas商品价格fromtb_GoodsInfo",sqlcon);DataSetmyds=newDataSet();sqlcon.Open();myda.Fill(myds);sqlcon.Close();GridView1.DataSource=myds;GridView1.DataBind();}protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowType==DataControlRowType.DataRow){e.Row.Cells[3].Attributes.Add("style","vnd.ms-excel.numberformat:¥#,
解决方案七:
.00");}}
解决方案八:
用NPOI导出吧http://www.cnblogs.com/relax/p/3586355.html