如何获取word模板中的列表项值

问题描述 投票:0回答:1

我正在使用Aspose报告引擎生成带有Word模板的报告, 我将json数据传递到JsonDataSource中,我想检查word模板中的项目值, 但数据转换为 DataRow,我找不到该值

这是我在word模板中访问数据值的方式:

<<[m.testCategory.Any(x => x[2].ToString()== "1")]>>

很奇怪的是,我在本地环境中可以通过索引2访问数据,但在服务器环境中却无法访问。

如何访问word模板中的数据, 预先感谢您的时间和帮助。

这是代码:

var manager = new Manager
{
    testCategory = new int[] { 1 ,2,3}
};

string managerJson = JsonSerializer.Serialize(manager);
byte[] managerJsonBytes = Encoding.UTF8.GetBytes(managerJson);
using MemoryStream managerJsonStream = new MemoryStream(managerJsonBytes);
var managerJsonJsondata = new JsonDataSource(managerJsonStream, new JsonDataLoadOptions
{
    SimpleValueParseMode = JsonSimpleValueParseMode.Strict,
});
var dataSources = new Object[] { managerJsonJsondata };

ReportingEngine engine = new ReportingEngine();
engine.Options = ReportBuildOptions.RemoveEmptyParagraphs;
engine.BuildReport(doc, dataSources, new string[] { "m" });
doc.Save("C:\\WorkSpace\\" + "ReportingEngine.HelloWorld.docx");

public class Manager
{
    public int[] testCategory { get; set; }
}
c# aspose aspose.words
1个回答
0
投票

根据 https://docs.aspose.com/words/net/accessing-json-data/,以下是如何访问简单值 JSON 数组的项目:

注意 – 要引用简单类型值数组的 JSON 对象属性,应在模板文档中使用该属性的名称(例如“Child”),而相同的名称带有“_Text”后缀(例如,“Child_Text”)应该用于引用该数组的某个项目的值。

所以,

<<[m.testCategory.Any(x => x[2].ToString()== "1")]>>
可以替换为
<<[m.testCategory.Any(x => x.testCategory_Text.ToString()== "1")]>>
。 请注意,无需使用
ToString()
,因为支持数值比较。

© www.soinside.com 2019 - 2024. All rights reserved.