繁体   English   中英

使用asp.net,如何让浏览器在Excel中打开制表符分隔的txt文件?

[英]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文件写回浏览器。

http://epplus.codeplex.com/

IE有时会忽略mimetype; 如果发送了mimetype,Firefox将忽略该扩展名。

你曾经能够做到这一点很好,但是当你试图欺骗它们时,新版本的办公室不喜欢它,就像你已经发现的那样。 Excel可以打开制表符分隔的.txt文件,但听起来你希望它直接从broswer打开。 您可以尝试查看Excel支持的XML电子表格格式。 但你的扩展必须是.xmlss

否则你将不得不使用第三方库在服务器上生成excel文档,就像其他人所说的那样。 或者如果可能,切换到不同的格式,如csv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM