将文本存储为数字

我有一个Excel工作簿,其中列C为数字存储为文本。 什么是C#语法将其转换为数字? 我知道这个VBA会做这个工作

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

而我用C#试了这个,但是它保留了以文本forms存储的数字。

 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#中我必须做些什么才能将以数字forms存储为文本的列进行转换。

将单元格值转换为.NETtypes适用于我:

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

在这里输入图像说明

你有没有尝试过使用'w3.Columns.NumberFormat'而不是'Cells []。Style.NumberFormat.Format'

它在Excel VSTO应用程序中的一些地方使用,它工作的很好。

我不明白kuujinbo正在做什么包的东西。 用VB做同样的事情要简单得多:

 using Excel = Microsoft.Office.Interop.Excel; ... Excel.Range rangeOfValues = ws3.Range("C:C"); rangeOfValues.Cells.NumberFormat = "#0"; rangeOfValues.Value = rangeOfValues.Value;