gridview导出excel 只能导出.xls,用高版本excel一直会有警告,怎么解决

码东东666 2016-07-26 11:20:59
错误提示如下:

研究了一下:
方法一:可用,就是打开excel有警告
private void Export(string FileType, string FileName)
{
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GVpositionrecods.AllowPaging = false;
GVpositionrecods.AllowSorting = false;
bind();
GVpositionrecods.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
GVpositionrecods.AllowPaging = true;
GVpositionrecods.AllowSorting = true;
bind();
}
方法二:利用org.in2bits.MyXls.dll
问题,不知道为什么前两列内容为空,不知道是不是因为汉字愿意,txt看都是乱码。
private void Method()
{
XlsDocument xls = new XlsDocument();
xls.FileName = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "") + ".xls";//excel文件名称
Worksheet sheet = xls.Workbook.Worksheets.Add("jhpt"); //创建一个工作页为jhpt
Cells cells = sheet.Cells;
int colnum = GVpositionrecods.Columns.Count; //获取gridview列数
for (int i = 0; i < colnum; i++)
{
cells.Add(1, (i + 1), this.GVpositionrecods.Columns[i].HeaderText);//导出gridView列名
}
for (int i = 0; i < GVpositionrecods.Rows.Count; i++)
{
for (int j = 0; j < colnum; j++)
{
cells.Add((i + 2), (j + 1), GVpositionrecods.Rows[i].Cells[j].Text.Trim());
}
}
//xls.Save(@"D:\"); //保存到指定位置
xls.Send();//把写好的excel文件输出到客户端
}
...全文
204 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzf86211861 2016-08-08
  • 打赏
  • 举报
回复
引用 10 楼 CSDN_Doris 的回复:
谢谢各位!目前用Aspose.Cells.dll,网上下的破解版。但是也只能导出.xls,不过不会报错,报错还是转出来的excel不是标准格式,实际是html。结贴!
他导 07 都是可以的,你再找找例子。
码东东666 2016-08-05
  • 打赏
  • 举报
回复
谢谢各位!目前用Aspose.Cells.dll,网上下的破解版。但是也只能导出.xls,不过不会报错,报错还是转出来的excel不是标准格式,实际是html。结贴!
  • 打赏
  • 举报
回复
凡是导出合法的 Excel 格式的都不会报错,凡事导出一个不合法格式(例如只是 html <table> 元素而已)然后给文件名强行设置为 excel 文件后缀的就会报错。 使用一个更专业一点的 Excel 文件生成工具即可。
webdiyer 2016-07-28
  • 打赏
  • 举报
回复
用免费开源的ClosedXML,把DataSet直接保存为excel文件,只需要两三行代码: http://closedxml.codeplex.com/
秋的红果实 2016-07-27
  • 打赏
  • 举报
回复
对于office2003以后版本,用第一种方式就不行了,如果你的用户不多(比如公司办公软件,而不是网站),方便培训,可以用ActiveX方式,让用户下载安装插件,这个插件里可以实现导出功能
jhll 2016-07-27
  • 打赏
  • 举报
回复
最好的办法就是用第三方控件,比较好的组件:Aspose.Words.dll Aspose.Excel.dll,网上可以下载到,这样可以避免任何excel版本问题。
码东东666 2016-07-26
  • 打赏
  • 举报
回复
有的地方说:利用表头做标签 数据罗列成xml文件格式具体怎么弄呢?
码东东666 2016-07-26
  • 打赏
  • 举报
回复
和org.in2bits.MyXls.dll感觉差不多,保存的文件只能是.xls,保存后打开没有警告。保存.xlsx后报错打不开。
yzf86211861 2016-07-26
  • 打赏
  • 举报
回复
推荐一个做Excel 很好用的插件 aspose 你的这种写法 导出高版本的 就是有这种提示的,貌似很难解决。
码东东666 2016-07-26
  • 打赏
  • 举报
回复
BoundField:简单的绑定数据,方便快捷 TemplateField:除了绑定数据外,还可以设置控件、复杂的样式。
码东东666 2016-07-26
  • 打赏
  • 举报
回复
//知道为什么为空了,BoundField 可以成功导出,TemplateField 为空

<asp:TemplateField HeaderText="单位数量" SortExpression="单位数量">
                            <ItemTemplate>
                                <%#Eval("单位数量")%>
                            </ItemTemplate>
                            <ItemStyle HorizontalAlign="Center" />
                        </asp:TemplateField>
                        <asp:BoundField DataField="单价" HeaderText="单价" SortExpression="单价" />
没人踩啊

62,017

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧