为什么来自 .NET Core Web Api 的 Excel 文件已损坏?

Why Excel file from .NET Core Web Api is corrupt?

我正在使用 .NET Core 和 EPPlus.Core 来生成 Excel 文件,用于创建报告。不幸的是,Excel 数据在服务器和客户端 (Angular2) 之间的某处损坏,我使用 FileSaver.js 来保存 Excel文件到磁盘。

这是我的网站 API 控制器:

[HttpGet]
public async Task<IActionResult> Get()
{
    try
    {
        var report = await _reportService.GetReportAsync();
        var mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        var fileBytes = report.Bytes;
        return File(fileBytes, mimeType, report.Name);
    }
    catch (Exception exception)
    {
        return StatusCode((int)HttpStatusCode.InternalServerError, exception);
        throw;
    }
}

这是报告服务:

public async Task<Report> GetReportAsync()
{
    byte[] bytes;
    using (var package = new ExcelPackage())
    {
        var worksheet = package.Workbook.Worksheets.Add("Employee");
        worksheet.Cells[1, 1].Value = "ID";
        worksheet.Cells[1, 2].Value = "Name";
        worksheet.Cells[1, 3].Value = "Gender";
        worksheet.Cells[1, 4].Value = "Salary (in $)";

        worksheet.Cells["A2"].Value = 1000;
        worksheet.Cells["B2"].Value = "Jon";
        worksheet.Cells["C2"].Value = "M";
        worksheet.Cells["D2"].Value = 5000;

        worksheet.Cells["A3"].Value = 1001;
        worksheet.Cells["B3"].Value = "Graham";
        worksheet.Cells["C3"].Value = "M";
        worksheet.Cells["D3"].Value = 10000;

        worksheet.Cells["A4"].Value = 1002;
        worksheet.Cells["B4"].Value = "Jenny";
        worksheet.Cells["C4"].Value = "F";
        worksheet.Cells["D4"].Value = 5000;
        bytes = package.GetAsByteArray();

        /* WORKS FINE - FILE IS SAVED AND IS NOT CORRUPT */
        const string path2 = @"c:\temp\test2.xlsx";
        await File.WriteAllBytesAsync(path2, bytes);
        /* WORKS FINE - FILE IS SAVED AND IS NOT CORRUPT */

    }
    return new Report(bytes);
}

这是客户端代码:

this.http.get(this.baseUri + uri, query).subscribe(response => {
if (response.status === 200) {
        let fileSaver = require('file-saver');
        let mediaType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
        let blob = new Blob([response._body], { type: mediaType });
        let filename = 'test.xlsx';
        fileSaver.saveAs(blob, filename);
    }
});

文件test2.xlsx保存成功,打开没有问题。如果我在 Notepad++ 中打开它,我可以看到这样的二进制文件:

Angular2客户端下载的文件test.xlsx无法在Excel中打开,因为数据已损坏,如果我打开它Notepad++ 中的文件我可以看到有区别 - 有效字符被垃圾替换:

我已经阅读了很多类似的问题,但没有任何内容能够让我朝着正确的方向前进。我尝试过的一些事情:

var httpResponseMessage = new HttpResponseMessage {Content = new ByteArrayContent(report.Bytes)}; httpResponseMessage.Content.Headers.Add("x-filename", report.Name); httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {FileName = Path.GetFileName(report.Name)}; httpResponseMessage.Content.Headers.ContentLength = report.Bytes.Length; httpResponseMessage.StatusCode = HttpStatusCode.OK; return httpResponseMessage;

This相关但不相同,我的文件损坏到无法修复和打开的程度。

有什么建议吗?会不会是编码问题?

更新

有效Excel文件的十六进制转储:

50 4B 03 04 14 00 08 00 08 00 11 59 66 4B E4 48 AD AF 18 01 00 00 33 03 00 00 13 00 00 00 5B 43 6F 6E 74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 6D 6C B5 92 CF 4A 03 31 10 C6 5F 65 C9 55 9A B4 1E 44 A4 DB 1E AA 1E 55 B0 3E C0 98 CC 76 43 F3 8F CC B4 B6 6F 6F 36 2B 22 A5 82 1E 7A 9A 24 DF CC F7 FD 08 33 5F 1E BC 6B F6 98 C9 C6 D0 8A 99 9C 8A 06 83 8E C6 86 4D 2B DE D6 8F 93 5B D1 10 43 30 E0 62 C0 56 1C 91 C4 72 31 5F 1F 13 52 53 66 03 B5 A2 67 4E 77 4A 91 EE D1 03 C9 98 30 14 A5 8B D9 03 97 6B DE A8 04 7A 0B 1B 54 D7 D3 E9 8D D2 31 30 06 9E F0 E0 21 16 F3 7B EC 60 E7 B8 59 8D EF 83 75 2B 20 25 67 35 70 C1 52 C5 4C 34 0F 87 22 8E 94 C3 5D FD 61 6E 1F CC 09 CC E4 0B 44 66 74 B5 87 7A 9B E8 EA 34 A0 A8 34 24 3C 97 8F C9 D6 E0 BF 22 62 D7 59 8D 26 EA 9D 2F 23 92 52 46 30 D4 23 B2 77 B2 56 E9 C1 86 31 F4 05 32 3F 81 2F AE EA E0 D4 47 CC DB F7 18 B7 B2 6A 17 01 18 22 EA F9 B7 FC 2A 92 AA 65 76 41 10 E2 A3 43 3A 47 31 2A 97 8C EE 21 A3 79 E5 5C 96 FC 3C C1 CF 86 6F 10 55 97 7E F1 09 50 4B 07 08 E4 48 AD AF 18 01 00 00 33 03 00 00 50 4B 03 04 14 00 08 00 08 00 11 59 66 4B 98 DA EB 8B AE 00 00 00 27 01 00 00 0B 00 00 00 5F 72 65 6C 73 2F 2E 72 65 6C 73 8D CF C1 0E 82 30 0C 06 E0 57 59 7A 97 81 07 63 0C 83 8B 31 E1 6A F0 01 E6 56 06 01 D6 65 9B 0A 6F EF 8E 62 3C 78 6C FA F7 FB D3 B2 5E E6 89 3D D1 87 81 AC 80 22 CB 81 A1 55 A4 07 6B 04 DC DA CB EE 08 2C 44 69 B5 9C C8 A2 80 15 03 D4 55 79 C5 49 C6 74 12 FA C1 05 96 0C 1B 04 F4 31 BA 13 E7 41 F5 38 CB 90 91 43 9B 36 1D F9 59 C6 34 7A C3 9D 54 A3 34 C8 F7 79 7E E0 FE D3 80 AD C9 1A 2D C0 37 BA 00 D6 AE 0E FF B1 A9 EB 06 85 67 52 8F 19 6D FC 51 F1 95 48 B2 F4 06 A3 80 65 E2 2F F2 E3 9D 68 CC 12 0A BC 2A F9 E6 C1 EA 0D 50 4B 07 08 98 DA EB 8B AE 00 00 00 27 01 00 00 50 4B 03 04 14 00 08 00 08 00 11 59 66 4B 9C 2D 27 53 C1 00 00 00 4D 01 00 00 0F 00 00 00 78 6C 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C 8D 8E B1 0E C2 30 0C 44 77 24 FE 21 CA 07 10 60 60 A8 52 16 60 40 42 82 89 3D A4 2E 8D 48 E2 C8 49 55 F8 7B D2 56 45 B0 B1 DD 9D CF 4F 27 3B A4 C7 0D F1 C1 9E CE FA 58 50 C9 9B 94 42 21 44 D4 0D 38 15 17 18 C0 E7 5B 8D E4 54 CA 96 EE 02 EB DA 68 D8 A3 6E 1D F8 24 D6 CB E5 46 10 58 95 0C FA D8 98 10 F9 48 FB 87 15 03 81 AA 62 03 90 9C 1D 51 4E 19 CF B7 F3 19 63 B2 5F 76 35 D0 C5 C1 E6 60 9A DB 87 4C 8C 25 F1 DB 92 03 EC F3 31 38 E6 95 83 92 1F 5C B0 F8 02 E0 6C 48 8F 55 C9 57 9C 51 61 B2 A0 63 95 F5 84 FC 62 48 AD AC BE 10 AB 5B 6B 77 59 9E FD 09 D5 F8 D9 B7 A5 98 36 6D DF 50 4B 07 08 9C 2D 27 53 C1 00 00 00 4D 01 00 00 50 4B 03 04 14 00 08 00 08 00 11 59 66 4B 81 62 92 A2 D6 00 00 00 34 02 00 00 1A 00 00 00 78 6C 2F 5F 72 65 6C 73 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C 2E 72 65 6C 73 AD 91 CF 6A C3 30 0C 87 5F C5 E8 BE 38 E9 60 8C 51 B7 97 31 E8 B5 7F 1E 40 D8 4A 1C 9A D8 C6 D2 DA E5 ED 6B 36 56 52 28 63 87 9E 84 64 F4 FD 3E AC E5 FA 6B 1C D4 89 32 F7 31 18 68 AA 1A 14 05 1B 5D 1F 3A 03 87 FD C7 D3 2B 28 16 0C 0E 87 18 C8 C0 44 0C EB D5 72 4B 03 4A 59 61 DF 27 56 85 11 D8 80 17 49 6F 5A B3 F5 34 22 57 31 51 28 2F 6D CC 23 4A 69 73 A7 13 DA 23 76 A4 17 75 FD A2 F3 9C 01 B7 4C B5 71 06 F2 C6 35 A0 F6 53 A2 FF B0 63 DB F6 96 DE A3 FD 1C 29 C8 9D 08 7D 8E F9 C8 9E 48 0A 14 73 47 62 E0 3A 62 FD 5D 9A AA 50 41 DF 97 59 3C 52 86 65 1A CA 5F 5E 4D 7E FA BF E2 9F 1F 1A EF 31 93 DB 49 2E 87 9E 5B CC C7 BF 32 FA E6 DA AB 0B 50 4B 07 08 81 62 92 A2 D6 00 00 00 34 02 00 00 50 4B 03 04 14 00 08 00 08 00 11 59 66 4B 2A 7B 81 AB 61 01 00 00 C3 03 00 00 18 00 00 00 78 6C 2F 77 6F 72 6B 73 68 65 65 74 73 2F 73 68 65 65 74 31 2E 78 6D 6C 8D 93 DD 4E 83 30 18 86 6F A5 E9 B9 2B 7F 9B CB 02 2C 9B 64 D1 33 E3 81 E7 15 3E 46 33 A0 A4 ED 86 F7 E6 81 97 E4 2D 58 BA 05 A1 8D C6 B3 16 9E BE EF C3 97 F2 F5 F1 19 6F DF 9B 1A 5D 40 48 C6 DB 04 FB 0B 0F 23 68 73 5E B0 F6 98 E0 B3 2A EF D6 78 9B C6 3D 17 27 59 01 28 A4 F1 56 6E 44 82 2B A5 BA 0D 21 32 AF A0 A1 72 C1 3B 68 F5 BB 92 8B 86 2A BD 15 47 C2 CB 92 E5 90 F1 FC DC 40 AB 48 E0 79 2B 22 A0 A6 4A 57 C9 8A 75 12 5F D3 FE 93 25 3B 01 B4 30 0A 4D 7D 8D 6A 28 6B 71 1A 17 4C A7 0F F6 48 40 99 E0 9D BF C9 22 8C 48 1A 1B F8 95 41 2F 27 6B 34 7C C9 1B E7 A7 61 F3 54 24 D8 33 2C 71 E0 83 29 7F 16 A8 80 92 9E 6B F5 C2 FB 47 60 C7 4A E9 21 2D 7F F2 33 AA 68 1A 0B DE 23 3D 12 5F EB E4 C3 62 E7 63 24 4D B6 C6 A5 7E 7A 49 BD 98 5C 74 4F 7E 23 F6 2E E1 CF 89 07 97 08 E6 44 E6 12 E1 48 10 ED 34 8A 05 A3 58 70 3B 62 0A 3D CF B6 0A 9C C4 C8 B2 72 89 A5 65 35 AD 58 4E 2B 66 4A E1 A8 14 CE 95 AC 31 EC 43 A7 70 65 29 B9 84 AD 64 55 FC E6 14 8D 4E D1 FC 80 35 F8 7D E4 34 DE 5B 4E 2E B1 B6 9C A2 BF C7 44 26 D7 AB D2 57 1F C4 81 73 05 C2 DC D6 F1 77 4C BF 01 50 4B 07 08 2A 7B 81 AB 61 01 00 00 C3 03 00 00 50 4B 03 04 14 00 08 00 08 00 11 59 66 4B FC 8A 2B 3D 46 01 00 00 69 03 00 00 0D 00 00 00 78 6C 2F 73 74 79 6C 65 73 2E 78 6D 6C 8D 53 4D 6F 83 30 0C BD 4F DA 7F 88 F8 01 4B 5B 69 3B 4C B0 CB 24 A4 5D 7A E9 0E BB 86 92 40 24 E7 43 89 99 60 BF 7E 40 D2 26 9D 98 D4 9B FD 9E F3 9E B1 4D E9 71 02 7E EA 39 47 32 2A D0 BE 2A 7A 44 FB 4A A9 3F F7 5C 31 FF 64 2C D7 33 23 8C 53 0C E7 D4 75 D4 5B C7 59 EB 97 47 0A E8 61 B7 7B A1 8A 49 5D BC 3D 3E 10 52 EA 41 D5 0A 3D 39 9B 41 63 55 EC 0A 42 03 21 8C 4E F0 3E 54 47 38 C6 73 E6 7F C8 37 83 99 DF 5F DE AD B0 66 8A 07 E2 9D 81 6C 9C 4C 6C 49 AF 0A 21 F4 D1 4E 02 5C ED 0E C9 6E 86 93 AE 65 88 DC E9 7A 06 49 8C 3F 27 CB AB 42 1B CD 6F 3C D2 B3 7B 25 3A C7 A6 FD E1 79 53 25 84 B1 D3 C6 B8 96 BB 8D D1 04 22 59 01 17 98 4F C5 C9 AE BF 01 D0 D8 3C 6D 0C A2 51 39 D2 4A D6 19 CD 20 EB 29 33 B9 24 B1 AF 33 07 38 2D F7 F1 25 36 9A 1B 05 09 AB FE 68 D7 2D 2F A3 8F 61 5C 38 CD 05 92 E4 5D 6A CC 5A 98 8E 83 6A B8 AB D7 D3 5B 8A 73 8F B5 A0 36 41 85 8C 62 C3 FA C6 75 ED 63 C3 F8 CA 91 E5 C6 AA E2 B8 B8 41 A6 D8 0C 12 50 EA FF 3E 2D 5A B4 A3 F8 7B F2 25 4D 3F D7 DB 2F 50 4B 07 08 FC 8A 2B 3D 46 01 00 00 69 03 00 00 50 4B 03 04 14 00 08 00 08 00 11 59 66 4B F3 7E 6F 36 C5 00 00 00 58 01 00 00 14 00 00 00 78 6C 2F 73 68 61 72 65 64 53 74 72 69 6E 67 73 2E 78 6D 6C 65 90 41 4A 04 31 10 45 AF 12 0A 17 BA 70 D2 BA 10 95 24 B3 50 46 14 74 A3 1E A0 E8 AE 99 0E 74 2A 6D AA 5A EC DB 1B 11 11 32 CB F7 3E FF 17 94 DB 7E A5 C9 7C 52 91 98 D9 C3 C5 A6 03 43 DC E7 21 F2 C1 C3 FB DB EE FC 1A 8C 28 F2 80 53 66 F2 B0 92 80 D9 06 27 A2 A6 56 59 3C 8C AA F3 AD B5 D2 8F 94 50 36 79 26 AE C9 3E 97 84 5A B1 1C AC CC 85 70 90 91 48 D3 64 2F BB EE CA 26 8C 0C A6 CF 0B AB 87 1B 30 0B C7 8F 85 EE FE B8 1E 88 C1 69 78 BC 77 56 83 B3 3F F4 6B 5E 30 51 EB 1E 88 07 2A AD 7D C5 09 CB 6A 4E 23 9B 93 B3 36 7C CA DC AA E7 A3 D9 82 23 A6 A3 26 31 AF AD DC FD 0B 5B 5F 13 BE 01 50 4B 07 08 F3 7E 6F 36 C5 00 00 00 58 01 00 00 50 4B 01 02 2D 00 14 00 08 00 08 00 11 59 66 4B E4 48 AD AF 18 01 00 00 33 03 00 00 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5B 43 6F 6E 74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 11 59 66 4B 98 DA EB 8B AE 00 00 00 27 01 00 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 59 01 00 00 5F 72 65 6C 73 2F 2E 72 65 6C 73 50 4B 01 02 2D 00 14 00 08 00 08 00 11 59 66 4B 9C 2D 27 53 C1 00 00 00 4D 01 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 40 02 00 00 78 6C 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 11 59 66 4B 81 62 92 A2 D6 00 00 00 34 02 00 00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 3E 03 00 00 78 6C 2F 5F 72 65 6C 73 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C 2E 72 65 6C 73 50 4B 01 02 2D 00 14 00 08 00 08 00 11 59 66 4B 2A 7B 81 AB 61 01 00 00 C3 03 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 5C 04 00 00 78 6C 2F 77 6F 72 6B 73 68 65 65 74 73 2F 73 68 65 65 74 31 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 11 59 66 4B FC 8A 2B 3D 46 01 00 00 69 03 00 00 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 03 06 00 00 78 6C 2F 73 74 79 6C 65 73 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 11 59 66 4B F3 7E 6F 36 C5 00 00 00 58 01 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 84 07 00 00 78 6C 2F 73 68 61 72 65 64 53 74 72 69 6E 67 73 2E 78 6D 6C 50 4B 05 06 00 00 00 00 07 00 07 00 C2 01 00 00 8B 08 00 00 00 00

损坏 Excel 文件的十六进制转储:

50 4B 03 04 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 48 EF BF BD EF BF BD 18 01 00 00 33 03 00 00 13 00 00 00 5B 43 6F 6E 74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 6D 6C EF BF BD EF BF BD EF BF BD 4A 03 31 10 EF BF BD 5F 65 EF BF BD 55 EF BF BD EF BF BD 1E 44 EF BF BD EF BF BD 1E EF BF BD 1E 55 EF BF BD 3E EF BF BD EF BF BD EF BF BD 76 43 EF BF BD CC B4 EF BF BD 6F 6F 36 2B 22 EF BF BD EF BF BD 1E 7A EF BF BD 24 EF BF BD EF BF BD EF BF BD EF BF BD 08 33 5F 1E EF BF BD 6B EF BF BD EF BF BD EF BF BD EF BF BD D0 8A EF BF BD EF BF BD EF BF BD 06 EF BF BD EF BF BD C6 86 4D 2B EF BF BD D6 8F EF BF BD 5B EF BF BD 10 43 30 EF BF BD 62 EF BF BD 56 1C EF BF BD EF BF BD 72 31 5F 1F 13 52 53 66 03 EF BF BD EF BF BD 67 4E 77 4A EF BF BD EF BF BD EF BF BD 03 C9 98 30 14 EF BF BD EF BF BD EF BF BD 03 EF BF BD 6B DE A8 04 7A 0B 1B 54 EF BF BD EF BF BD EF BF BD EF BF BD 31 30 06 EF BF BD EF BF BD EF BF BD 21 16 EF BF BD 7B EF BF BD 60 EF BF BD 59 EF BF BD EF BF BD 75 2B 20 25 67 35 70 EF BF BD 52 EF BF BD 4C 34 0F EF BF BD 22 EF BF BD EF BF BD EF BF BD 5D EF BF BD 61 6E 1F EF BF BD 09 EF BF BD EF BF BD 0B 44 66 74 EF BF BD EF BF BD 7A EF BF BD EF BF BD EF BF BD 34 EF BF BD EF BF BD 34 24 3C EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD 22 62 EF BF BD 59 EF BF BD 26 EF BF BD 2F 23 EF BF BD 52 46 30 EF BF BD 23 EF BF BD 77 EF BF BD 56 EF BF BD EF BF BD EF BF BD 31 EF BF BD 05 32 3F EF BF BD 2F EF BF BD EF BF BD EF BF BD EF BF BD 47 EF BF BD EF BF BD EF BF BD 18 EF BF BD EF BF BD 6A 17 01 18 22 EF BF BD EF BF BD EF BF BD EF BF BD 2A EF BF BD EF BF BD 65 76 41 10 EF BF BD 43 3A 47 31 2A EF BF BD EF BF BD EF BF BD 21 EF BF BD 79 EF BF BD 5C EF BF BD EF BF BD 3C EF BF BD CF 86 6F 10 55 EF BF BD 7E EF BF BD 09 50 4B 07 08 EF BF BD 48 EF BF BD EF BF BD 18 01 00 00 33 03 00 00 50 4B 03 04 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD EF BF BD EB 8B AE 00 00 00 27 01 00 00 0B 00 00 00 5F 72 65 6C 73 2F 2E 72 65 6C 73 EF BF BD EF BF BD EF BF BD 0E EF BF BD 30 0C 06 EF BF BD 57 59 7A EF BF BD EF BF BD 07 63 0C EF BF BD EF BF BD 31 EF BF BD 6A EF BF BD 01 EF BF BD 56 06 01 EF BF BD 65 EF BF BD 0A 6F EF BF BD 62 3C 78 6C EF BF BD EF BF BD EF BF BD D3 B2 5E EF BF BD 3D D1 87 EF BF BD EF BF BD EF BF BD 22 CB 81 EF BF BD 55 EF BF BD 07 6B 04 EF BF BD EF BF BD EF BF BD EF BF BD 08 2C 44 69 EF BF BD EF BF BD C8 A2 EF BF BD 15 03 EF BF BD 55 79 EF BF BD 49 EF BF BD 74 12 EF BF BD EF BF BD 05 EF BF BD 0C 1B 04 EF BF BD 31 EF BF BD 13 EF BF BD 41 EF BF BD 38 CB 90 EF BF BD 43 EF BF BD 36 1D EF BF BD 59 EF BF BD 34 7A C3 9D 54 EF BF BD 34 EF BF BD EF BF BD 79 7E EF BF BD EF BF BD D3 80 EF BF BD EF BF BD 1A 2D EF BF BD 37 EF BF BD 00 D6 AE 0E EF BF BD EF BF BD EF BF BD EF BF BD 06 EF BF BD 67 52 EF BF BD 19 6D EF BF BD 51 EF BF BD 48 EF BF BD EF BF BD 06 EF BF BD EF BF BD 65 EF BF BD 2F EF BF BD EF BF BD 68 EF BF BD 12 0A EF BF BD 2A EF BF BD EF BF BD EF BF BD EF BF BD 0D 50 4B 07 08 EF BF BD EF BF BD EB 8B AE 00 00 00 27 01 00 00 50 4B 03 04 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 2D 27 53 EF BF BD 00 00 00 4D 01 00 00 0F 00 00 00 78 6C 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C EF BF BD EF BF BD EF BF BD 0E EF BF BD 30 0C 44 77 24 EF BF BD 21 EF BF BD 07 10 60 60 EF BF BD 52 16 60 40 42 EF BF BD EF BF BD 3D EF BF BD 2E EF BF BD 48 EF BF BD EF BF BD 49 55 EF BF BD 7B EF BF BD 56 45 EF BF BD EF BF BD DD 9D EF BF BD 4F 27 3B EF BF BD EF BF BD 0D EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD 58 50 C9 9B EF BF BD 42 21 44 EF BF BD 0D 38 15 17 18 EF BF BD EF BF BD 5B EF BF BD EF BF BD 54 CA 96 EF BF BD 02 EF BF BD EF BF BD 68 D8 A3 6E 1D EF BF BD 24 EF BF BD EF BF BD EF BF BD 46 10 58 EF BF BD 0C EF BF BD D8 98 10 EF BF BD 48 EF BF BD EF BF BD 15 03 EF BF BD EF BF BD 62 03 EF BF BD EF BF BD 1D 51 4E 19 CF B7 EF BF BD 19 63 EF BF BD 5F 76 35 EF BF BD EF BF BD EF BF BD EF BF BD 60 EF BF BD DB 87 4C EF BF BD 25 EF BF BD DB 92 03 EF BF BD EF BF BD 31 38 E6 95 83 EF BF BD 1F 5C EF BF BD EF BF BD 02 EF BF BD 6C 48 EF BF BD 55 EF BF BD 57 EF BF BD 51 61 EF BF BD EF BF BD 63 EF BF BD EF BF BD EF BF BD EF BF BD 62 48 EF BF BD EF BF BD EF BF BD 10 EF BF BD 5B 6B 77 59 EF BF BD EF BF BD 09 EF BF BD EF BF BD D9 B7 EF BF BD EF BF BD 36 6D EF BF BD 50 4B 07 08 EF BF BD 2D 27 53 EF BF BD 00 00 00 4D 01 00 00 50 4B 03 04 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 62 EF BF BD EF BF BD EF BF BD 00 00 00 34 02 00 00 1A 00 00 00 78 6C 2F 5F 72 65 6C 73 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C 2E 72 65 6C 73 EF BF BD EF BF BD EF BF BD 6A EF BF BD 30 0C EF BF BD 5F EF BF BD EF BF BD 38 EF BF BD 60 EF BF BD 51 EF BF BD EF BF BD 31 EF BF BD 7F 1E 40 EF BF BD 4A 1C EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD 6B 36 56 52 28 63 EF BF BD EF BF BD EF BF BD 64 EF BF BD EF BF BD 3E EF BF BD EF BF BD EF BF BD 6B 1C D4 89 32 EF BF BD 31 18 68 EF BF BD 1A 14 05 1B 5D 1F 3A 03 EF BF BD EF BF BD EF BF BD EF BF BD 2B 28 16 0C 0E EF BF BD 18 EF BF BD EF BF BD 44 0C EF BF BD EF BF BD 72 4B 03 4A 59 61 EF BF BD 27 56 EF BF BD 11 D8 80 17 49 6F 5A EF BF BD EF BF BD 34 22 57 31 51 28 2F 6D EF BF BD 23 4A 69 73 EF BF BD 13 EF BF BD 23 76 EF BF BD 17 75 EF BF BD EF BF BD EF BF BD 01 EF BF BD 4C EF BF BD 71 06 EF BF BD EF BF BD 35 EF BF BD EF BF BD 53 EF BF BD EF BF BD EF BF BD 63 EF BF BD EF BF BD EF BF BD DE A3 EF BF BD 1C 29 C8 9D 08 7D EF BF BD EF BF BD C8 9E 48 0A 14 73 47 62 EF BF BD 3A 62 EF BF BD 5D EF BF BD EF BF BD 50 41 DF 97 59 3C 52 EF BF BD 65 1A EF BF BD 5F 5E 4D 7E EF BF BD EF BF BD EF BF BD 1F 1A EF BF BD 31 EF BF BD EF BF BD 49 2E EF BF BD EF BF BD 5B EF BF BD C7 BF 32 EF BF BD EF BF BD DA AB 0B 50 4B 07 08 EF BF BD 62 EF BF BD EF BF BD EF BF BD 00 00 00 34 02 00 00 50 4B 03 04 14 00 08 00 08 00 EF BF BD 53 66 4B 2A 7B EF BF BD EF BF BD 61 01 00 00 EF BF BD 03 00 00 18 00 00 00 78 6C 2F 77 6F 72 6B 73 68 65 65 74 73 2F 73 68 65 65 74 31 2E 78 6D 6C EF BF BD EF BF BD EF BF BD 4E EF BF BD 30 18 EF BF BD 6F EF BF BD EF BF BD 2B 7F EF BF BD EF BF BD 02 2C EF BF BD 64 EF BF BD 33 EF BF BD EF BF BD 15 3E 46 33 EF BF BD EF BF BD EF BF BD EF BF BD E6 81 97 EF BF BD 2D 58 EF BF BD 05 EF BF BD EF BF BD C6 B3 16 EF BF BD EF BF BD EF BF BD C3 97 EF BF BD EF BF BD EF BF BD 19 6F DF 9B 1A 5D 40 48 EF BF BD EF BF BD 04 EF BF BD 0B 0F 23 68 73 5E EF BF BD EF BF BD EF BF BD EF BF BD 2A EF BF BD EF BF BD 78 EF BF BD EF BF BD 3D 17 27 59 01 28 EF BF BD EF BF BD 56 6E 44 EF BF BD 2B EF BF BD EF BF BD 0D 21 32 EF BF BD EF BF BD EF BF BD 72 EF BF BD 3B 68 EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD 2A EF BF BD 15 47 EF BF BD CB 92 EF BF BD EF BF BD EF BF BD EF BF BD 40 EF BF BD 48 EF BF BD 79 2B 22 EF BF BD EF BF BD 4A 57 C9 8A 75 12 5F EF BF BD EF BF BD EF BF BD 25 3B 01 EF BF BD 30 0A 4D 7D EF BF BD 6A 28 6B 71 1A 17 4C EF BF BD 0F EF BF BD 48 40 EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD 22 EF BF BD 48 1A 1B EF BF BD EF BF BD 41 2F 27 6B 34 7C EF BF BD 1B EF BF BD 61 EF BF BD 54 24 EF BF BD 33 2C 71 EF BF BD EF BF BD 29 7F 16 EF BF BD EF BF BD EF BF BD EF BF BD 6B EF BF BD EF BF BD EF BF BD 47 60 EF BF BD 4A EF BF BD 21 2D 7F EF BF BD 33 EF BF BD 68 1A 0B EF BF BD 23 3D 12 5F EF BF BD EF BF BD EF BF BD 62 EF BF BD 63 24 4D EF BF BD C6 A5 7E 7A 49 EF BF BD EF BF BD 5C 74 4F 7E 23 EF BF BD 2E EF BF BD CF 89 07 EF BF BD 08 EF BF BD 44 EF BF BD 12 EF BF BD 48 10 EF BF BD 34 EF BF BD 05 EF BF BD 58 70 3B 62 0A 3D CF B6 0A EF BF BD EF BF BD C8 B2 72 EF BF BD EF BF BD 65 35 EF BF BD 58 4E 2B 66 4A EF BF BD 14 CE 95 EF BF BD 31 EF BF BD 43 EF BF BD 70 65 29 EF BF BD EF BF BD EF BF BD 64 55 EF BF BD EF BF BD 14 EF BF BD 4E EF BF BD EF BF BD EF BF BD 35 EF BF BD 7D EF BF BD 34 EF BF BD 5B 4E 2E EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD 44 26 D7 AB EF BF BD 57 1F C4 81 73 05 EF BF BD EF BF BD EF BF BD EF BF BD 77 4C EF BF BD 01 50 4B 07 08 2A 7B EF BF BD EF BF BD 61 01 00 00 EF BF BD 03 00 00 50 4B 03 04 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD EF BF BD 2B 3D 46 01 00 00 69 03 00 00 0D 00 00 00 78 6C 2F 73 74 79 6C 65 73 2E 78 6D 6C EF BF BD 53 4D 6F EF BF BD 30 0C EF BF BD 4F EF BF BD 7F EF BF BD EF BF BD 01 4B 5B 69 3B 4C EF BF BD EF BF BD 24 EF BF BD 5D 7A EF BF BD 0E EF BF BD EF BF BD EF BF BD 40 24 EF BF BD 43 EF BF BD EF BF BD 60 EF BF BD 7E 40 EF BF BD 26 EF BF BD EF BF BD D4 9B EF BF BD EF BF BD EF BF BD 4D EF BF BD 71 02 7E EF BF BD 39 47 32 2A D0 BE 2A 7A 44 EF BF BD 4A EF BF BD 3F EF BF BD 5C 31 EF BF BD 64 2C EF BF BD 33 23 EF BF BD 53 0C EF BF BD EF BF BD 75 EF BF BD 5B EF BF BD 59 EF BF BD 47 0A EF BF BD 61 EF BF BD 7B EF BF BD EF BF BD 49 5D EF BF BD 3D 3E 10 52 EF BF BD 41 EF BF BD 0A 3D 39 EF BF BD 41 63 55 EF BF BD 0A 42 03 21 EF BF BD 4E EF BF BD 3E 54 47 38 EF BF BD 73 EF BF BD 7F EF BF BD 37 EF BF BD EF BF BD EF BF BD 5F DE AD EF BF BD 66 EF BF BD 07 E2 9D 81 6C EF BF BD 4C 6C 49 EF BF BD 0A 21 EF BF BD EF BF BD 4E 02 5C EF BF BD 0E EF BF BD 6E EF BF BD EF BF BD EF BF BD 65 EF BF BD EF BF BD EF BF BD 7A 06 49 EF BF BD 3F 27 CB AB 42 1B EF BF BD 6F 3C D2 B3 7B 25 3A C7 A6 EF BF BD EF BF BD 79 53 25 EF BF BD EF BF BD EF BF BD C6 B8 EF BF BD EF BF BD EF BF BD EF BF BD 04 22 59 01 17 EF BF BD 4F EF BF BD C9 AE EF BF BD 01 EF BF BD EF BF BD 3C 6D 0C EF BF BD 51 39 EF BF BD 4A EF BF BD 19 EF BF BD 20 EF BF BD 29 33 EF BF BD 24 EF BF BD EF BF BD 33 07 38 2D EF BF BD EF BF BD 25 36 EF BF BD 1B 05 09 EF BF BD EF BF BD 68 EF BF BD 2D 2F EF BF BD EF BF BD 61 5C 38 EF BF BD 05 EF BF BD EF BF BD 5D 6A EF BF BD 5A EF BF BD EF BF BD EF BF BD 6A EF BF BD EF BF BD EF BF BD EF BF BD 5B EF BF BD 73 EF BF BD EF BF BD EF BF BD 36 41 EF BF BD EF BF BD 62 EF BF BD EF BF BD EF BF BD 75 EF BF BD 63 EF BF BD EF BF BD CA 91 EF BF BD C6 AA E2 B8 B8 41 EF BF BD EF BF BD 0C 12 50 EF BF BD EF BF BD 3E 2D 5A EF BF BD EF BF BD EF BF BD 7B EF BF BD 25 4D 3F EF BF BD EF BF BD 2F 50 4B 07 08 EF BF BD EF BF BD 2B 3D 46 01 00 00 69 03 00 00 50 4B 03 04 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 7E 6F 36 EF BF BD 00 00 00 58 01 00 00 14 00 00 00 78 6C 2F 73 68 61 72 65 64 53 74 72 69 6E 67 73 2E 78 6D 6C 65 EF BF BD 41 4A 04 31 10 45 EF BF BD 12 0A 17 EF BF BD 70 D2 BA 10 EF BF BD 24 EF BF BD 50 46 14 74 EF BF BD 1E EF BF BD E8 AE 99 0E 74 2A 6D EF BF BD 5A EF BF BD EF BF BD 1B 11 11 32 EF BF BD EF BF BD 3E EF BF BD 17 EF BF BD EF BF BD 7E EF BF BD EF BF BD 7C 52 EF BF BD EF BF BD EF BF BD EF BF BD C5 A6 03 43 EF BF BD EF BF BD 21 EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD EF BF BD 1A EF BF BD 28 EF BF BD 53 66 F2 B0 92 80 EF BF BD 06 27 EF BF BD EF BF BD 56 59 3C EF BF BD EF BF BD EF BF BD D2 8F EF BF BD 50 36 79 26 EF BF BD EF BF BD 3E EF BF BD EF BF BD 5A EF BF BD 1C EF BF BD CC 85 70 EF BF BD EF BF BD 48 EF BF BD 64 2F EF BF BD EF BF BD EF BF BD 26 EF BF BD 0C EF BF BD EF BF BD 0B EF BF BD EF BF BD 1B 30 0B C7 8F EF BF BD EF BF BD EF BF BD EF BF BD 1E EF BF BD EF BF BD 69 78 EF BF BD 77 56 EF BF BD EF BF BD 3F EF BF BD 6B 5E 30 51 EF BF BD 1E EF BF BD 07 2A EF BF BD 7D EF BF BD 09 EF BF BD 6A 4E 23 EF BF BD EF BF BD EF BF BD 36 7C EF BF BD DC AA EF BF BD D9 82 23 EF BF BD EF BF BD 26 31 EF BF BD EF BF BD EF BF BD EF BF BD 0B 5B 5F 13 EF BF BD 01 50 4B 07 08 EF BF BD 7E 6F 36 EF BF BD 00 00 00 58 01 00 00 50 4B 01 02 2D 00 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 48 EF BF BD EF BF BD 18 01 00 00 33 03 00 00 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5B 43 6F 6E 74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD EF BF BD EB 8B AE 00 00 00 27 01 00 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 59 01 00 00 5F 72 65 6C 73 2F 2E 72 65 6C 73 50 4B 01 02 2D 00 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 2D 27 53 EF BF BD 00 00 00 4D 01 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 40 02 00 00 78 6C 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 62 EF BF BD EF BF BD EF BF BD 00 00 00 34 02 00 00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 3E 03 00 00 78 6C 2F 5F 72 65 6C 73 2F 77 6F 72 6B 62 6F 6F 6B 2E 78 6D 6C 2E 72 65 6C 73 50 4B 01 02 2D 00 14 00 08 00 08 00 EF BF BD 53 66 4B 2A 7B EF BF BD EF BF BD 61 01 00 00 EF BF BD 03 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 5C 04 00 00 78 6C 2F 77 6F 72 6B 73 68 65 65 74 73 2F 73 68 65 65 74 31 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD EF BF BD 2B 3D 46 01 00 00 69 03 00 00 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 03 06 00 00 78 6C 2F 73 74 79 6C 65 73 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 08 00 08 00 EF BF BD 53 66 4B EF BF BD 7E 6F 36 EF BF BD 00 00 00 58 01 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 EF BF BD 07 00 00 78 6C 2F 73 68 61 72 65 64 53 74 72 69 6E 67 73 2E 78 6D 6C 50 4B 05 06 00 00 00 00 07 00 07 00 EF BF BD 01 00 00 EF BF BD 08 00 00 00 00

根据我的评论,我认为您将 http 响应提取为字符串而不是 blob。 :)

我不得不用 [AlloyAnonymous] 属性修饰 Web API 函数以获取 Angular http get RequestOptionsArgs,responseType: ResponseContentType.Blob 接受并最终调用 Web API 函数适当地。我想应该有更好的解决方法。

[HttpGet]
[AllowAnonymous]        
public IActionResult GetSearchedReportsFile(string fileGuid)
  {            
  byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\temp\epplus\" + fileGuid + ".xlsx");
  return File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "myfile.xlsx");            
  }

我也在使用 EPPlus return InMemory excel 工作簿作为字节数组,只有当我 运行 来自的 docker 容器时它才会被破坏Linux 主机与 Windows 主机。

using (var package = ExcelUtil.createExcelPackage(hits))
    {
        reportBytes = package.GetAsByteArray();
    }
return File(reportBytes, XlsxContentType, fileDownloadName);

在 beyondcompare 中,我可以看到大约 14 个位置总是将 'C0 A4' 替换为“4F A5”,但我不知道它的相关性。大多数替换都在文件末尾附近,看起来像这样:

我不确定是什么原因造成的,但当我弄清楚后,我会 post 给出答案。我会对此发表评论,但图片似乎很相关,我相信我们很快就会想出一些办法...