2013-04-04 11 views
6

Ich erstelle eine Excel-Tabelle dynamisch und Einfügen von Werten in der gleichen. Aber Wert in einigen Zellen werden in das falsche Format eingefügt. Folgende ist mein Excel-Blatt enter image description here Wert in der ausgewählten Zelle sollte gewesen 0002-9343 aber es wird eingefügt Feb-43 .Diese aufgrund eines falschen Formats für diese Spalte (Spalte-D) in dem Excel-Sheet . Ich muss die gesamte Spalte-D (alle Zellen unter Überschrift D "data2") in "Text Format" ändern, bevor Sie die Daten eingeben. Es folgt der Code die Excel-Tabelle zum Erstellen und Einfügen von DatenWie Format einer Spalte von Excel-Blatt in C# ändern?

excel = new Application(); 
      excel.Visible = false; 
      wb = (_Workbook)(excel.Workbooks.Add(System.Reflection.Missing.Value)); 
      sheet = wb.Sheets.Add(); 
      sheet.Name = "TestSheet1"; 
      sheet.Cells[1, "A"].Value2 = "Id"; 
      sheet.Cells[1, "B"].Value2 = "Name"; 
      sheet.Cells[1, "C"].Value2 = "Data1"; 
      sheet.Cells[1, "D"].Value2 = "Data2"; 
      sheet.Cells[1, "E"].Value2 = "Data3"; 

      for (int i = 0; i < 10; i++) 
      { 
        id = i; 
        result = object; 
        data = JsonConvert.DeserializeObject(result); 

     name = (data != null) ? data.name : string.Empty; 
        data1 = (data != null) ? data.data1 : string.Empty; 
        data2 = (data != null) ? data.data2 : string.Empty; 
        data3 = (data != null) ? data.data3 : string.Empty; 

        sheet.Cells[i + 2, "A"].Value2 = name; 
        sheet.Cells[i + 2, "B"].Value2 = data1; 
        sheet.Cells[i + 2, "C"].Value2 = data2; 
        sheet.Cells[i + 2, "D"].Value2 = data3; 
      } 
      string ExcelPath = Some_path; 
      wb.SaveAsExcelPath,XlFileFormat.xlWorkbookNormal, null, null, false, false, XlSaveAsAccessMode.xlShared, false, false, null, null, null); 
      wb.Close(true); 
      excel.Quit(); 

Nun, bevor die Schleife Format in Text Ich muß das Format der Zellen unter Column-D ändern. Wie mache ich das selbe mit Code in C#?

Antwort

2

Dies ist nicht die Antwort auf Ihre Frage, aber ich würde empfehlen, dass Sie die Open XML Api anstelle von Excel über Interop verwenden. Dort können Sie den Datentyp für jede Zelle definieren, die Sie Ihrer Tabelle hinzufügen.

Cell c = new Cell(); 
c.DataType = CellValues.InlineString; 
2

Haben Sie versucht mit NumberFormat?

sheet.Cells[i + 2, "D"].NumberFormat = "@";  
sheet.Cells[i + 2, "A"].Value2 = name; 
sheet.Cells[i + 2, "B"].Value2 = data1; 
sheet.Cells[i + 2, "C"].Value2 = data2; 
sheet.Cells[i + 2, "D"].Value2 = data3;  

Ich würde empfehlen, in Zukunft einfachere Bibliotheken zu betrachten. Interop-Ansatz ist voll gültig, aber manchmal schwieriger zu arbeiten, wie Sie wollen.

5

Nun, vor der Schleife muss ich das Format der Zellen unter Spalte-D in Textformat ändern. Wie mache ich das gleiche mit Code in C#?

das Format der gesamten Spalte Um dies zu ändern

verwenden
// 4 is for Col D 
sheet.Cells[1, 4].EntireColumn.NumberFormat = "@"; 

Denken Sie daran, Col D zu formatieren, bevor Sie es zu schreiben versuchen. Mit .EntireColumn wird sichergestellt, dass Sie das Format der Excel-Zellen nicht einzeln ändern müssen :)

Verwandte Themen