我正在ASP上做一些Excel导出.NET网站.

Eingabe Kosten je GerÃt GerÃt:

这是我的代码:

Response.Clear();
Response.ContentType = "application/ms-excel";
Response.AddHeader("Content-Disposition", "inline;filename=NachkalkGeraete.xls;");
var writer = new HtmlTextWriter(Response.Output);

SomeControl.RenderControl(writer); /* FormView, Table, DataGrid... */

Response.End();

我已经try 过显式设置编码..但没有发生变化:

Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=NachkalkGeraete.xls");

Response.BufferOutput = true;
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Charset = "UTF-8";
EnableViewState = false;

System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);

SomeControl.RenderControl(hw);

Response.Write(tw.ToString());
Response.End();

请问怎么了?

推荐答案

我发现问题可能出在excel文件的头中,它不包含BOM byte sequence(在文件开头表示使用的编码).

所以我就这样做了,对我来说很管用:

Response.Clear();
Response.AddHeader("content-disposition","attachment;filename=Test.xls");   
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);

FormView1.RenderControl(hw);

Response.Write(sw.ToString());
Response.End(); 

Asp.net相关问答推荐

如何在 asp.net 服务器中使用字体

Web API 自托管 - 在所有网络接口上绑定

如何在 ASP.NET 中以 'YYYY-MM-DD' 格式获取当前日期?

C# ASP.NET Core Serilog 添加类名和方法到日志(log)

asp.net - 会话 - 多个浏览器选项卡 - 不同的会话?

System.Web.Helpers.Crypto - 盐在哪里?

判断会话是否为空

iOS 8 / Safari 8 不适用于 ASP.NET AJAX 扩展

返回 IHttpActionResult vs IEnumerable vs IQueryable

如何从 JS 访问 ViewBag

如何在 ASP.Net 网络表单中使用标签?

实体框架:如何解决外键约束可能导致循环或多个级联路径?

HttpResponse.End 或 HttpResponse.Close 与 HttpResponse.SuppressContent

InvalidOperationException:无法为角色创建 DbSet,因为此类型未包含在上下文模型中

如何在我自己的方法中模仿 string.Format()?

为什么混合 Razor Pages 和 VueJs 是一件坏事?

在资源文件中使用 HTML

在 ASP.NET MVC 中获取服务器机器名称?

GZIP 与 DEFLATE 压缩相比有什么优势?

IsMobileDevice 是如何工作的?