内容控件设置好以后,插入动态数据,第一次使用不生效,后面才生效。
// 在模板上面填充动态数据
async fillDyncDataInTemplate(dyncData) {
// 处理文档内容
const contentControls = await this.wpsApp.Application.ActiveDocument
.ContentControls
const count = await contentControls.Count
for (let i = 1; i <= count; i++) {
// 获取第 N 个内容控件
const contentControl = await contentControls.Item(i)
const tag = await contentControl.Tag
let title = await contentControl.Title
title = title.replace(/{|}/g, '')
const range = await contentControl.Range
// 包含产品字段或者tag为table的都属于表格数据,处理文档内容时不处理,留在处理表格时处理。
if (title.includes('产品')) {
range.Text = ' '
} else if (tag === 'table' && dyncData.data.tableDataVos) {
range.Text = ' '
const start = await range.Start
const tableHtml = this.generateTableString(dyncData.data.tableDataVos)
await this.wpsApp.Application.ActiveDocument.Range(start, start).PasteHtml({
HTML: tableHtml
})
} else {
let value = dyncData.data.singleLineVos.find(
(item) => item?.mergeName === title
)?.value
value = value || value === 0 ? value : ' ' // 此处是不是空字符串,而是空格,如果传空字符串会导致内容错乱。
range.Text = `${value}`
}
}
},