2017-08-15 47 views
8

enter image description here Wygenerowałem plik Excel z OpenXML 2.7.2 w .NETCoreApp 1.1 i zapisałem go w folderze projektu. Następnie w mojej funkcji czytam bajty i próbuję zwrócić je jako plik. Nie dostaję błędu, ale w odpowiedzi właśnie otrzymuję plik binarny. Wygląda na to, że działa, ale nie zostaje pobrana.W jaki sposób wyświetlić pobrany plik programu Excel utworzony za pomocą OpenXml w .NET Core

Oto mój kod:

[HttpGet] 
[Route("export")] 
public IActionResult Export() 
    { 
     return File(System.IO.File.ReadAllBytes(filePath), 
     contentType: "application/octet-stream", 
     fileDownloadName: "MySheet.xlsx"); 

    } 

Jeśli ktoś wie jak służyć do pobrania excel plik w rdzeniu .net daj mi znać. Jakakolwiek pomoc się przyda, dzięki!

UPDATE

nie jestem pewien, że korupcja jest związane z generowania pliku Excel z OpenXML bo nawet gdy próbuję eksportować pusty plik, który nie został wygenerowany z OPENXML uzyskać ten sam komunikat o błędzie "Plik jest uszkodzony i nie można go otworzyć". Nie jest też całkowicie związany z programem Excel 2016, ponieważ mogę w nim otwierać inne pliki programu Excel.

+0

Twój kod powinien zadziałać. Mam problem ze zrozumieniem, jaki masz problem. Pobrany plik zostanie dostarczony jako plik binarny? Co ten obraz w pytaniu ma reprezentować i jakie narzędzie jest używane? W jaki sposób wywoływana jest akcja? – Nkosi

+0

Obrazek pokazuje, co otrzymuję w odpowiedzi na moje połączenie http, które jest binarne Excel. Nie chcę tego. Chcę, aby plik zapisał na PC/Mac pod nazwą MySheet.xlsx. Narzędzie, którego użyłem do wyświetlenia odpowiedzi, to narzędzie Chromes Inspect. Wywołuję trasę eksportu z mojego przedniego końca, która jest kanciasta 2. – jonv562

+0

Jeśli po prostu wprowadzisz adres URL w przeglądarce, wyświetli się monit o pobranie pliku, lub przynajmniej zacznij go pobierać, jeśli przeglądarka jest skonfigurowana do tego celu . – Nkosi

Odpowiedz

2

Znalazłem pracę, więc nie muszę polegać na czytaniu pliku i serwowaniu go, co wydaje się być moim problemem. Teraz to, co robię, generuję program Excel i zwrócę adres URL pliku Excel. Następnie w odpowiedzi na sukces wołam window.open().

this.export().subscribe(
     data => window.open(urlToExcelFile, "_blank"), 
     err => console.log(err) 
    );