2017-07-13 4 views
0

Ich hoffe, Sie können mir hier helfen. Ich habe ein paar Probleme mit XSSFWorkbook. Es erzeugt die Datei ohne Probleme, aber wenn ich in Excel öffne, erhalte ich die folgende Warnung: Excel fand unlesbaren Inhalt in 'blah blah, blah.xlsx' Wollen Sie den Inhalt dieser Arbeitsmappe wiederherstellen? Wenn Sie der Quelle dieser Arbeitsmappe vertrauen, klicken Sie auf Ja. Wenn ich auf "Ja" klicke, wird die Datei problemlos geöffnet. Allerdings, wenn ich es durch Notepad ++, direkt am Ende der Datei ausführen, bekomme ich meine Seite Markup.C# XSSFWorkbook Unlesbarer Inhalt

Wenn ich HSSFWorkbook verwende, öffnet es sich in Excel ohne Fehler, aber ich bin auf 36k Zeilen beschränkt. Mein Export hat über 300k, also bin ich zu XSSFWorkbook gewechselt. Unten ist meine Methode zum Exportieren der Arbeitsmappe.

private void SaveXLSWorkbook(XSSFWorkbook workbook) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 

      Response.Buffer = true;    
      Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
      Response.AddHeader("content-disposition","attachment;filename=ProductExport_" + _dateTime + ".xlsx"); 
      workbook.Write(ms); 
      Response.BinaryWrite(ms.ToArray()); 
     } 
    } 

Kann jemand bitte Licht darauf werfen? Danke im Voraus. :) - Andy

+0

Enthält Ihr Excel Makros? Die Generierung der Datei ist in diesem Fall in Ordnung, und sie wird auch mit einer Warnmeldung geöffnet, aber sie erwartet beim Erstellen der Datei für den Export einen anderen MIME-Typ "application/vnd.openxmlformats .......". –

Antwort

0

Ich benutze ähnliche Ansatz und es funktioniert mir Feind. Für das Response-Objekt verwenden Sie bitte Clear() und End() wie im folgenden Code.

using (MemoryStream ms = new MemoryStream()) 
       { 
       Response.Clear(); 
       Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
       Response.AddHeader("content-disposition","attachment;filename=ProductExport_" + _dateTime + ".xlsx"); 

       workbook.Write(ms); 
       Response.BinaryWrite(ms.ToArray());     
       Response.End(); 
      } 
Verwandte Themen