2017-02-15 68 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

这是更好的答案。谢谢 –