2013-04-04 15 views
6

Dinamik olarak bir excel sayfası oluşturuyorum ve aynı değerlere ekliyorum. Bazı hücrelerdeki yanlış dosya biçiminde alınıyor. Excel tabakanın seçilmiş hücrede zaman Excel tabaka aşağıda enter image description here değeri 0.002-9.343olmalıydı ama bunun nedeni bu sütun (sütun D) için bazı yanlış biçimine Şubat-43 .Bu şekilde sokulur . Verileri girmeden önce tüm sütun D'yi (D "data2" başlığı altında gelen tüm hücreler) "Metin Formatı" olarak değiştirmem gerekiyor. Ardından I formatı Text Kolon D altında hücre biçimini değiştirmek gerekir döngü önce şimdi veri C# içinde excel sayfasının sütun biçimini nasıl değiştirilir?

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

Excel tabaka oluşturma ve sokulması için bir kod. C# ile koddan nasıl yapılır?

cevap

2

Sorunuzun yanıtı bu değil, ancak Interop üzerinden excel kullanmak yerine Açık XML API'yı kullanmanızı öneririm. Burada, e-tablonuza eklediğiniz herhangi bir hücrenin veri türünü tanımlayabilirsiniz.

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

NumberFormat'i kullanmayı denediniz mi?

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;  

Gelecekte daha kolay kitaplıklara bakmanızı öneririz. Interop yaklaşım tamamen geçerli, ancak istediğiniz gibi çalışmak bazen zor.

5

Şimdi, döngüden önce, Kolon-D'den Metin Formatına altındaki hücrelerin biçimini değiştirmem gerekiyor. C# ile aynı koddan nasıl yapılır?

tüm kolonun formatı bu

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

buna yazma denemeden önce Col D biçimlendirmek unutmayın kullanmak değiştirin. .EntireColumn'u kullanmak, Excel Hücreleri'nin biçimini tek tek değiştirmeniz gerekmeyeceğinden emin olur :)

İlgili konular