NPOI - 从模板创建新 excel 时条件格式不起作用

NPOI - Conditional Formatting not working when create new excel from template

代码:

 private static void CreateExcel(string filename)
        {

            var workbook = new XSSFWorkbook();
            try
            {
                var sourcebook = AppDomain.CurrentDomain.BaseDirectory + "" + "\App_Data\Copy of VHC_modified_Report.xlsx";
                using (FileStream file = new FileStream(sourcebook, FileMode.Open, FileAccess.ReadWrite))
                {
                    workbook = new XSSFWorkbook(file);
                }
                XSSFFormulaEvaluator evaluator = new XSSFFormulaEvaluator(workbook);
                // evaluator.EvaluateAll();
                string filePath = AppDomain.CurrentDomain.BaseDirectory + "" + "App_Data\" + filename;
                using (var fileData = new FileStream(filePath, FileMode.CreateNew, FileAccess.ReadWrite))
                {
                    workbook.Write(fileData);
                    workbook.Close();
                }

            }
            catch (Exception ex)
            {
                throw new Exception("ExportToExcel: \n" + ex.Message);
            }

        }

从上面我可以从模板文件创建 excel sheet。

但是模板 Excel 文件,我有一些条件格式规则,并根据这些规则应用一些格式和填充颜色。

这些格式和颜色没有出现在创建的 excel 文件中,但我可以在检查条件格式时看到规则,但未应用格式。

NPOI 中有一个错误,当它写出 xlsx 文件的 styles.xml 部分时,它添加了属性 fillPattern="none"(而不是 solid,或者缺少此属性) ,这导致没有填充。我已经复制了这个,并通过打开生成的 xlsx 文件并从适当的节点中删除该属性来手动修复。

也就是说,有一个简单的修复方法。在您的模板电子表格中不要使用 "solid color" 填充。选择一个图案,或创建一个 "two color" 图案并选择相同的 2 种颜色。这会以不同的方式写出文件,带有一个 gradientFill 节点,该节点没有此错误。

此外,前景色规则也可以正常工作。这似乎只影响纯色背景条件格式设置规则。

有人应该向 NPOI 团队报告此错误。很遗憾,我现在无法执行此操作。

在您的代码中替换以下内容

 string filePath = AppDomain.CurrentDomain.BaseDirectory + "" + "App_Data\" + filename+ ".xlsx";  

您在创建 excel 文件时错过了 excel 扩展名。
也用 TheSoftwareJedi solution.I 测试过,Working.