Epplus无法将列格式化为数字

时间:2017-12-20 12:36:27

标签: c# epplus

我已将数据分配给代码中的特定列。 将列转换为数字

workSheet.Cells["B3:B11"].Style.Numberformat.Format = "#,##0.00";    
workSheet.Cells["B3"].Value = obj.Number1;
workSheet.Cells["B4"].Value = obj.Number2;
workSheet.Cells["B5"].Value = obj.Number3;
workSheet.Cells["B6"].Value = obj.Number4;
workSheet.Cells["B7"].Value = obj.Number5;
workSheet.Cells["B8"].Value = obj.Number6;
workSheet.Cells["B9"].Value = obj.Number7;
workSheet.Cells["B10"].Value = obj.Number8;
workSheet.Cells["B11"].Value = obj.Number9;

生成excel时,列为文本格式。我希望它们是数字格式。需要帮助。

2 个答案:

答案 0 :(得分:1)

如果那些是strings,那么Epplus / excel会尊重它并将它们保存为字符串,因此您设置的格式将被忽略。您可能会在单元格的角上看到绿色三角形,表示它们看起来像数字。

要将它们视为数字,您需要将它们转换为doubles,如下所示:

workSheet.Cells["B3"].Value = Double.Parse(obj.Number1);

如果您确信它们永远不会为空或格式不正确,那么上述内容应该足够好了。否则,可能想要做一些这样的检查:

double number;
if (obj.Number1 != null && Double.TryParse(obj.Number1, out number))
    workSheet.Cells["B3"].Value = number;

答案 1 :(得分:0)

您可以执行以下操作,对我有用:

//To align center
sheetcreate.Cells[1, 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

//To align right
eachRowObject.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;