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

标签 c# excel npoi

代码:

 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 表。

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

Template file conditional formatting

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

Created excel file

最佳答案

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

也就是说,有一个简单的解决方法。在您的模板电子表格中不要使用“纯色”填充。要么选择一个图案,要么创建一个“双色”图案并选择相同的 2 种颜色。这会以不同的方式写出文件,使用 gradientFill 节点,该节点没有此错误。

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

enter image description here

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

关于c# - NPOI - 从模板创建新 Excel 时条件格式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51672574/

相关文章:

c# - .NET Micro Framework 不安全代码

c# - 为什么字符串作为值类型,即使它是 C# 中的引用类型

c# - 使用 .NET Standard 声明 C# 异常

excel - COUNTIF 无法计算非空白公式结果?

c# - NPOI - 如何区分日期时间格式的数字 Excel 单元格 (c#)

c# - 我该如何将 NPOI.SS 转换为 NPOI.XSSF?

c# - 使用 C# 请求数据库

c++ - 在 C++ 中将 JSON 转换为 CSV

c# - 转换 asp :Table to excel format

c# - EPPlus 克隆工作表