NPOI -从模板创建新Excel时,有条件打印机不起作用

k97glaaz  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(118)

代码:

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文件,我有一些条件格式规则和根据规则应用一些格式和填充颜色。


的数据
这些格式和颜色不会出现在创建的Excel文件中,但我可以在检查条件格式时看到规则,但格式不适用。


unguejic

unguejic1#

NPOI中有一个bug,当它写出xlsx文件的styles.xml部分时,它添加了属性fillPattern="none"(而不是solid,或者没有这个属性),这导致没有填充。我复制了这个错误,并通过打开生成的xlsx文件并从适当的节点删除该属性手动修复。
也就是说,有一个简单的修复方法。在模板电子表格中不要使用“纯色”填充。选择一个模式,或者创建一个“双色”模式并选择相同的2种颜色。这会以不同的方式写出文件,使用gradientFill节点,它没有这个bug。
同样,前景色规则也可以正常工作。这似乎只影响纯色背景条件格式规则。


的数据
应该有人向NPOI团队报告这个错误。很遗憾,我现在不能这样做。

xhv8bpkk

xhv8bpkk2#

替换代码中的以下内容

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

字符串
你已经错过了Excel扩展,而创建Excel文件.
还使用TheSoftwareJedi解决方案.我已经测试,工作.

jvidinwx

jvidinwx3#

对于未来的读者;在我的情况下,这个问题是因为我在做:

sh.SheetConditionalFormatting.CreateConditionalFormattingRule(ComparisonOperator.Between, "0,14", "1");

字符串
0,14中的逗号应该是一个点。所以请确保您检查您的公式是否正确,否则规则将在excel中归档。

相关问题