[英]With asp.net, how do I cause a browser to open a tab delimited txt file in Excel?
我们有一个制表符分隔文件供我们下载。 文件扩展名为txt,但用户希望它在Excel中自动打开。 以前的开发人员使用了以下代码:
private void DownloadLinkButtonCommandEventHandler(object sender, CommandEventArgs e)
{
Response.ContentType = "Application/x-msexcel";
var filePath = (string)e.CommandArgument;
Response.AppendHeader("content-disposition",
"attachment; filename=" + filePath);
Response.WriteFile(filePath);
Response.End();
}
ContentType正在设置为Excel,但似乎没有任何效果。 我猜txt文件扩展名正在导致它被记事本等取而代之。 我试过将它重命名为xls扩展名,但是Excel会抱怨我试图欺骗它或者它可能是一个损坏的文件。 这有什么轻松的胜利吗? 也许我应该将它转换为Excel文件。
我打开文件,将内容读入数据结构,然后使用任何Excel组件以Excel格式将其吐出(目前我是NPOI的粉丝)。
您不能依赖mime类型(ContentType)。 IE倾向于忽略响应流中指定的内容类型,并打开下载文件扩展名的默认应用程序。
会是更容易将文件转换为CSV这可能是因为更换容易\\t
用,
?
如果您希望它就地打开,那么处置应该是“内联”,而不是“附件”。
特别是IE对文件名的结尾很挑剔; iirc我只使用?s=.xls
取得了成功 - 即它只查看(或查看)URL的末尾; 不是内容类型。
在示例中不清楚,但您还应确保流中没有其他任何意外情况。 特别是你需要清除已经写过的任何标题。 使用类似提琴手的东西来检查电线究竟是什么。
最好的办法是绕过excel警告,将原生excel文件写回浏览器。
IE有时会忽略mimetype; 如果发送了mimetype,Firefox将忽略该扩展名。
你曾经能够做到这一点很好,但是当你试图欺骗它们时,新版本的办公室不喜欢它,就像你已经发现的那样。 Excel可以打开制表符分隔的.txt文件,但听起来你希望它直接从broswer打开。 您可以尝试查看Excel支持的XML电子表格格式。 但你的扩展必须是.xmlss
否则你将不得不使用第三方库在服务器上生成excel文档,就像其他人所说的那样。 或者如果可能,切换到不同的格式,如csv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.