深色模式
控制台
在一些业务场景中,我们可能需要将一些自定义的文本、段落或者表格数据批量填充至文档,如果这些数据足够简单,那么我们通过Range.Text一个一个的设置也能实现需求。但当数据体量比较大,或者数据是带格式的,继续使用Range.Text
不仅非常耗时而且极其容易出错。
我们推荐使用PasteHtml来完成数据的批量插入。首先,您需要根据实际业务场景提炼出您的业务数据,然后利用这些关键数据生成 HTML 字符串片段,最后通过我们的接口一次性插入至文档。
下面的例子中我们将实现一个多段落 + 表格的 HTML 片段插入:
/**
* 插入数据
*/
async function fillContent() {
const textArray = [
'余忆童稚时,能张目对日,明察秋毫,见藐小之物必细察其纹理,故时有物外之趣。',
'夏蚊成雷,私拟作群鹤舞于空中,心之所向,则或千或百,果然鹤也;昂首观之,项为之强。又留蚊于素帐中,徐喷以烟,使之冲烟而飞鸣,作青云白鹤观,果如鹤唳云端,为之怡然称快。',
'余常于土墙凹凸处,花台小草丛杂处,蹲其身,使与台齐;定神细视,以丛草为林,以虫蚁为兽,以土砾凸者为丘,凹者为壑,神游其中,怡然自得。',
'一日,见二虫斗草间,观之,兴正浓,忽有庞然大物,拔山倒树而来,盖一癞虾蟆,舌一吐而二虫尽为所吞。余年幼,方出神,不觉呀然一惊。神定,捉虾蟆,鞭数十,驱之别院。'
]
const tableArray = Array.from({ length: 20 }, () =>
Array.from({ length: 6 }, () => '测试文本')
)
const HTML = generateTextString(textArray) + generateTableString(tableArray)
await app.ActiveDocument.Range(0, 0).PasteHtml({
HTML
})
}
/**
* 生成文本HTML字符串
* @param data 文本数据(字符串数组)
*
* @return 文本HTML字符串
*/
function generateTextString(data) {
if (!Array.isArray(data)) throw TypeError('文本数据不合法')
return data.map(item => `<p>${item}</p>`).join('')
}
/**
* 生成表格HTML字符串
* @param data 表格数据(二维数组)
*
* @return 表格HTML字符串
*/
function generateTableString(data) {
if (!Array.isArray(data) || !Array.isArray(data[0]))
throw TypeError('表格数据不合法')
const rows = data.map(row => {
const columns = row.map(column => `<td>${column}</td>`)
return `<tr>${columns.join('')}</tr>`
})
return `<table>${rows.join('')}</table>`
}