使用Epplus不保存格式化特定列

时间:2017-06-26 17:41:31

标签: c# excel epplus

我正在使用EPPlus并遍历工作簿中每个工作表的所有列。我尝试使用包含单词" NUMBER"的标题格式化每一列。作为数字格式。它运行并且它命中了我设置数字格式的断点,但是当我打开电子表格时,列仍然被格式化为文本。非常感谢任何帮助。

    private void cleanSpreadSheet(string fileName)
    {
        // set all columns with a header of number to numeric type
        FileInfo existingFile = new FileInfo(fileName);
        var package = new ExcelPackage(existingFile);

        ExcelWorkbook wb = package.Workbook;

        foreach (ExcelWorksheet workSheet in wb.Worksheets)
        {
            var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
            for (int col = start.Column; col <= end.Column; col++)
            { // col by col
                if (workSheet.Cells[1, col].Text.ToUpper().Contains("NUMBER"))
                {
                    workSheet.Column(col).Style.Numberformat.Format = "0";                         
                }

            }
        }
        package.Save();
        package.Dispose();
        wb.Dispose();
    }

1 个答案:

答案 0 :(得分:1)

问题可能是您现有的Excel工作簿的数据格式为Excel&#34; Text&#34;。如果是这种情况,您可能无法简单地转换每个单元格&#39;格式为数字,因为Excel不知道如何转换&#34;文本&#34;到&#34;数字&#34;。

相反,您可能需要迭代EPPlus中的每个列和行,并在转换后替换每个值。下面的代码可以对演员表使用一些错误检查,但是让你对这个概念有所了解。

//foreach row ... foreach column... ExcelRange cell = worksheet.Cells[row, col]; cell.Value = double.Parse((string)cell.Value);