0

I am using .NET Core with EPPlus.Core to generate Excel files, intended to create reports. Unfortunately, the Excel data is corrupted somewhere between server and client (Angular2) where I use FileSaver.js to save the Excel file to disk.

This is my Web API controller:

[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;
    }
}

This is the report service:

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 is the client code:

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);
    }
});

The file test2.xlsx is saved successfully and opens without problems. If I open it in Notepad++ I can see binary like this:

test2.xlsx

The file test.xlsx downloaded by the Angular2 client fails to open in Excel because data is corrupted and if I open that file in Notepad++ I can see that there is a a difference - valid characters are replaced by crap:

test.xlsx

I have read a number of similar questions but nothing has been able to put me in the right direction. A few of the things I have tried:

  • Returning an application/octet-stream instead of Excel file
  • Using XHR instead of Angular http.get (cannot get this to work because I use Windows Negotiate token and I have no idea how I can use this token type with XHR)
  • Tried returning an HttpResponseMessage instead of File like this:

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 is related but not the same, my file is corrupt to the degree it cannot be repaired and opened.

Any suggestions? Could it be an encoding issue?

UPDATE

Hex dump of valid Excel file:

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

Hex dump of corrupted Excel file:

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

Marcus
  • 8,230
  • 11
  • 61
  • 88
  • Instead of a screenshot of Mojibake it would be better if you posted part of a hexdump – Christoffer Hammarström Nov 06 '17 at 11:16
  • Sure thing, not sure how that is going to help but by all means... :) The point of the screenshots was simply to demonstrate that the data was different. – Marcus Nov 06 '17 at 11:26
  • Holy... i just a small piece of the two hexdumps side by side in a monospace font please. – Christoffer Hammarström Nov 06 '17 at 11:56
  • 1
    Actually never mind, in the second hex dump i see a lot of `EF BF BD` which is the UTF-8 sequence of bytes for `U+FFFD`, which is the unicode code point `REPLACEMENT CHARACTER` that's used as a replacement when a byte sequence couldn't be decoded to a code point. It appears that you have an encoding issue. You're decoding the bytes to a string somewhere and then again encoding that string to bytes using UTF-8. Do not decode to string anywhere. – Christoffer Hammarström Nov 06 '17 at 11:58
  • You are right that the encoding differs and I can see this in Notepad++ as well - I guess my question is why? All code from server to client is provided and I can´t see why this is happening. – Marcus Nov 06 '17 at 12:46
  • I think you're extracting the http response as a string and not as a blob, see https://stackoverflow.com/questions/34149741/how-to-receive-blob-responses-using-angular-2s-angular-http-module – Christoffer Hammarström Nov 06 '17 at 13:01
  • Yeah, I didn´t realize that it is necessary to specify the `responseType`. Just adding `responseType: ResponseContentType.Blob` made the whole difference. Thanks! Post answer so I can accept. – Marcus Nov 06 '17 at 13:30
  • Im getting same problem but I don't know how to fixed in VueJs. Can you help me? – Yuri Morales Sep 04 '18 at 16:29

3 Answers3

2

As per my comment, i think you're extracting the http response as a string and not as a blob. :)

See How to receive blob responses using Angular 2's @angular/http module?

Christoffer Hammarström
  • 27,242
  • 4
  • 49
  • 58
1

I am also using EPPlus to return an InMemory excel workbook as a byte array, and it is being corrupted only when I run the docker container from a Linux host versus a Windows host.

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

Which in beyondcompare I can see about 14 locations where it always replaces 'C0 A4' with '4F A5' but I don't know the relevance of that. Most of the replacements are near the end of the file and look like such:

hex comparison

I'm not sure what is causing, but when I figure it out I'll post the answer. I'd make this a comment but the picture seemed relevant and I'm sure we'll come up with something shortly...

Community
  • 1
  • 1
Evan Morrison
  • 652
  • 6
  • 18
  • I'm curious if this has to do with the System.Drawing components of EPPlus. I know that is a different library for windows vs linux, and it was something that didn't work on linux until I added to the dockerfile: RUN apt-get update && apt-get install -y libgdiplus libc6-dev – Evan Morrison Apr 25 '19 at 21:27
  • As a side note for anyone looking for a follow-up -- this was because Windows was blocking the file upon download. After right clicking > properties > unblock, it was no different of a file than one from a Windows host. Hope that helps. – Evan Morrison Dec 22 '20 at 06:39
0

I had to decorate Web API function with [AlloyAnonymous] attribute to get Angular http get RequestOptionsArgs, responseType: ResponseContentType.Blob accepted and Web API function finally called properly. I guess there should be better workaround.

[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");            
  }