c# - NPOI - 从模板创建新的 excel 时条件格式不起作用
问题描述
代码:
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 文件中,但是在签入条件格式但未应用格式时,我可以看到规则。
解决方案
NPOI 中存在一个错误,即当它写出 xlsx 文件的 styles.xml 部分时,它会添加属性fillPattern="none"
(而不是实体,或者没有此属性),这会导致没有填充。我已经复制了这个,并通过打开生成的 xlsx 文件并从相应的节点中删除该属性来手动修复。
也就是说,有一个简单的解决方法。在您的模板电子表格中,不要使用“纯色”填充。要么选择一个图案,要么创建一个“双色”图案并选择相同的 2 种颜色。gradientFill
这会使用没有此错误的节点以不同方式写出文件。
此外,前景色规则也可以正常工作。这似乎只影响纯色背景条件格式规则。
有人应该将此错误报告给 NPOI 团队。不幸的是,我现在无法做到这一点。
推荐阅读
- php - 使用 AJAX 方法更新状态
- javascript - 如何在 ReactJS 中调用 getDerivedStateFromProps 中的方法?
- python - python - 如何使用python / pandas根据一列中的字符串拆分和复制行?
- text - 如何在 Windows 中更改 SAPI 声音 [PHP]
- javascript - Applescript:Javascript 在 safari 中点击未知 id
- java - TreeSet 不能在编译时检查比较器对象吗?
- python - 创建用户相关信息模型
- c# - 为什么要使用没有 setter 的 getter?
- mysql - sql查询问题从sql查询中找出表名
- python - psycopg2 无法连接到 docker 镜像