2017-02-15 40 views
5

我有一個Excel工作簿具有列C作爲數字存儲爲文本。什麼是C#語法將其轉換爲數字?我知道這個VBA會做這個工作轉換號碼存儲爲文本

Range("C:C").Select 
With Selection 
    Selection.NumberFormat = "0.00%" 
    .Value = .Value 
End With 

我試着用C# - 但它留下的數字存儲爲文本。

ExcelWorksheet ws3 = pck.Workbook.Worksheets.Add("New Sheet"); 
ws3.Cells["A1"].LoadFromDataTable(tableforme, true); 
ws3.View.FreezePanes(2, 4); 
ws3.Cells["C:C"].Style.Numberformat.Format = "#,##0.00"; 
ws3.Cells["C:C"].Style.Numberformat.Format = "0%"; 

在C#中我必須做些什麼才能將以數字形式存儲爲文本的列進行轉換。

回答

2

轉換單元格的值到.NET類型爲我工作:

var values = new List<object[]>() 
{ 
    new string[] { "0.001", "1.001", "2.002" }, 
    new string[] { "3.003", "4.004", "5.005" }, 
    new string[] { "6.006", "7.007", "8.008" } 
}; 

using (var package = new ExcelPackage()) 
{ 
    var sheet = package.Workbook.Worksheets.Add("Sheet1"); 
    sheet.Cells["A1"].LoadFromArrays(values); 
    foreach (var cell in sheet.Cells["C:C"]) 
    { 
     cell.Value = Convert.ToDecimal(cell.Value); 
    } 
    sheet.Cells["C:C"].Style.Numberformat.Format = "#,##0.00"; 
    File.WriteAllBytes(OUTPUT, package.GetAsByteArray()); 
} 

enter image description here

0

您是否嘗試過使用 代替 「w3.Columns.NumberFormat「細胞[]。Style.NumberFormat.Format」

它,我在一個Excel VSTO應用程序使用了幾個地方是什麼它效果很好。

1

我不明白什麼kuujinbo與所有包裝的東西做的。 用VB做同樣的事情要簡單得多:

using Excel = Microsoft.Office.Interop.Excel; 

... 

Excel.Range rangeOfValues = ws3.Range("C:C"); 
rangeOfValues.Cells.NumberFormat = "#0"; 
rangeOfValues.Value = rangeOfValues.Value; 
+0

這是更好的答案。謝謝 –