首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自Blazor服务器端项目的excel文件MIME类型

来自Blazor服务器端项目的excel文件MIME类型
EN

Stack Overflow用户
提问于 2022-01-06 20:12:01
回答 1查看 307关注 0票数 0

我正在尝试从Blazor服务器端项目下载作为excel的项目列表。我使用CsvHelper从列表中生成byte[],并使用下面的代码将byte[]内容作为excel文件下载。

来自Blazor组件的代码如下所示:单击按钮事件下载excel

代码语言:javascript
运行
复制
@inject IJSRuntime JsRuntime

private async Task ExportToExcel()
{
    jobStarted = true;        
    var fileBytes= ExportHelper.ConvertContactDataToCsv();  // This will return byte[] of contacts       
    if (await JsRuntime.InvokeAsync<bool>("confirm", $"Do you want to Export?"))
    {  
        var fileName = $"Contacts";
        await JsRuntime.InvokeAsync<object>("saveAsFile", fileName, Convert.ToBase64String(fileBytes));     
    }
             
    jobStarted = false;
}

Javascript代码如下

代码语言:javascript
运行
复制
    window.saveAsFile = function (fileName, byteBase64) {
        var link = this.document.createElement('a');
        link.download = fileName;
        link.href = "data:application/vnd.ms-excel;base64," + byteBase64;
        this.document.body.appendChild(link);
        link.click();
        this.document.body.removeChild(link);
    }

执行此操作将生成没有任何问题的文件,但在使用Microsoft打开文件时,警告消息如下

'Contacts.xls‘的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非你相信它的来源,否则不要打开它。你想打开它吗?

如果我无视警告并继续打开excel中的所有内容,看起来很好。

现在,我尝试在JS代码中生成扩展名xlsx和不同mime类型的文件,更改如下

代码语言:javascript
运行
复制
        var fileName = $"Contacts.xlsx";

在JS内部,分别尝试了这两种组合

代码语言:javascript
运行
复制
        link.href = "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64," + byteBase64;              
        
        link.href = "data:application/octet-stream;base64," + byteBase64;

执行的代码没有生成任何问题和文件,但是在打开文件时警告如下

Excel无法打开文件“Contacts.xlsx”,因为文件扩展名的文件格式无效。验证文件没有损坏,并且文件扩展名是否与文件的格式相匹配。

我根本无法打开这个文件。

那么,什么是正确的MIME类型,以确保下载的excel文件可以在Excel中打开而不受警告

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 21:05:16

由于您使用的是CsvHelper (通过ConvertContactDataToCsv),所以输出文件是逗号分隔的值文本文件,而不是二进制Excel .xls文件。

不要使用.xls文件扩展名,而是使用.csv;所以使用Contacts.csv而不是Contacts.xls

对于mime类型,可以使用text/csv

但最重要的是,是错误的文件扩展名导致了该文件的Excel错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70613084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档