1、测试环境
.Net8,Aspose.Words(v24.11.1)
2、代码
Console.WriteLine("Start");
var jsonData = """
{
"rptdata": [
{
"BGMC": "手动钢结构门生产质量检测结果",
"sdgjgsczl": [
{
"ypbh": "JGFMF20230088-001",
"cpmc": "手动钢结构门",
"cpxh": "GHFM1523(5)",
"sccj": "上海正承防护设备有限公司",
"ccbh": "ZC2210258"
}
]
},
{
"BGMC": "手动钢结构门生产质量检测结果",
"sdgjgsczl": [
{
"ypbh": "JGFMF20230088-002",
"cpmc": "手动钢结构门",
"cpxh": "GHFM1523(5)",
"sccj": "上海正承防护设备有限公司",
"ccbh": "ZC2210258"
}
]
}
]
}
""";
var doc = new Document("Test.docx");
var dataSource = new JsonDataSource(new MemoryStream(Encoding.UTF8.GetBytes(jsonData)));
var engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "data");
doc.Save($"{Guid.NewGuid()}.docx");
Console.WriteLine("End");
3、Word模板
结果1:
<<foreach [in rptdata]>>
<<[BGMC]>>
<<foreach [in sdgjgsczl]>><<[ypbh]>>
<</foreach>>
<</foreach>>
4、问题
此时运行报如下错误:
其实模板和JSON数据都没有问题。
后来我无意间在JSON的rptdata属性前随意加了一个属性,比如aaa,然后再运行就成功了,具体JSON和效果如下:
Console.WriteLine("Start");
var jsonData = """
{
"aaa":"测试",
"rptdata": [
{
"BGMC": "手动钢结构门生产质量检测结果",
"sdgjgsczl": [
{
所以不知道这个问题是不是一个bug呢?还是其他原因造成的。