2016-06-27 15 views
0

Im Folgenden ist die ActionResult-Methode erstellt, um EXCEl-Datei zurückzugeben, die einwandfrei funktioniert. Es besteht jedoch das Problem, dass der Inhalt für jede Spalte zu groß ist, als dass die Zeilen falsch formatiert sind, was bedeutet, dass zwischen den Zeilen große Leerzeichen vorhanden sind. Folgendes ist der ActionResult-Code.Wie passt man Excel-Spalten in MVC-4 ActionResult vor der Rückkehr EXCEL-Datei?

public ActionResult ImportExecelFile(int appNo) 
{ 

     List<PendingApproval> pendings = objPA.GetPendingApprovals(appNo.ToString()); 

     string xml = String.Empty; 
     XmlDocument xmlDoc = new XmlDocument(); 

     XmlSerializer xmlSerializer = new XmlSerializer(pendings.GetType()); 

     using (MemoryStream xmlStream = new MemoryStream()) 
     { 
      xmlSerializer.Serialize(xmlStream, pendings); 
      xmlStream.Position = 0; 
      xmlDoc.Load(xmlStream); 
      xml = xmlDoc.InnerXml; 
     } 

     //Create file 
     string fileName = "Pending_Approvals"; 

     fileName += string.Format("-{0}", DateTime.Now.ToString("yyyy-MM-dd")); 
     fileName += ".xls"; 

     byte[] fileContents = Encoding.UTF8.GetBytes(xml); 

     return File(fileContents, "application/vnd.ms-excel", fileName);   
    } 

Antwort

0

Sie sind nicht eine Excel-Datei erstellen - Sie XML erstellen und es mit einer Erweiterung .xls speichern. Excel wird versuchen, es zu öffnen, obwohl es wahrscheinlich eine Warnung an den Benutzer auslösen wird, weil es nicht wirklich eine Excel-Datei ist.

Excel-Dateien können Formatierungen einschließlich Spaltenbreiten enthalten. Daten, die als XML serialisiert sind, haben das nicht. Es gibt also wirklich keine Möglichkeit zu steuern, wie Excel das XML anzeigt.

Mit einer Bibliothek wie EPPlus, die Excel-Arbeitsmappen mit OpenXML erstellt, können Sie erreichen, was Sie zu tun versuchen. Aber wenn Sie XML nur als .xls speichern, haben Sie keine Kontrolle über die Formatierung. (Ich bin erstaunt, dass es überhaupt geöffnet wird, aber ich habe das Speichern einer XML-Datei als .xls getestet und es funktionierte mit Ausnahme der Warnmeldung.)