ClosedXML模板无法将数据写入Excel工作表问题求助
ClosedXML模板填充失效排查方案
- 核心修正:补充
Generate()方法调用,这是占位符替换的必要触发逻辑,你当前代码缺失这一步,所有变量添加完成后、保存文件前必须执行该方法。修正后的代码示例:
const string outputFile = @"\\Reports\Output\Test.xlsx"; var template = new XLTemplate(@"\\Reports\Test.xlsx"); var test = new models.Test(); test.id = 1; test.TestName = "ASDF"; test.TestScore = "303"; // 两种变量传递方式二选一即可,避免同名变量冲突 template.AddVariable(test); // template.AddVariable("TestScore", "232"); // template.AddVariable("TestName", "TESTNAME"); // 新增这行触发占位符替换 template.Generate(); template.SaveAs(outputFile); Process.Start(new ProcessStartInfo(outputFile) { UseShellExecute = true });
- 其他排查点:
- 检查模板单元格占位符格式,不要加多余空格,大小写要和变量名完全一致,不能写成
{{ TestName }}(中间带空格)或者{{testname}}(全小写) - 确认使用的ClosedXML版本≥0.95.0,低于该版本不支持XLTemplate模板功能,建议升级到最新稳定版
- 如果使用自定义类传递变量,确保类的属性为公共可访问,
models.Test的TestName、TestScore属性必须添加public修饰符 - 排查模板文件路径是否正确,确认程序对模板文件有读取权限,生成的输出文件没有被其他程序占用
- 检查模板单元格占位符格式,不要加多余空格,大小写要和变量名完全一致,不能写成
内容的提问来源于stack exchange,提问作者Kristofer
相关产品推荐
相关产品推荐

