为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕妹3242003 2021-11-14 14:58:29
代码: 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 文件中,但我可以在检查条件格式但未应用格式时看到规则。
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

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

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

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

//img1.sycdn.imooc.com//6190b3cc0001d15513020733.jpg

有人应该向 NPOI 团队报告这个错误。不幸的是,我现在无法做到这一点。


查看完整回答
反对 回复 2021-11-14
?
跃然一笑

TA贡献1826条经验 获得超6个赞

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

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

您在创建 excel 文件时错过了 excel 扩展名。
也使用 TheSoftwareJedi 解决方案。我已经测试,工作。


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 402 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信