如何使用 ONLYOFFICE 宏,将编号列表转换为表格
2025年02月12日作者:Mona
在处理文档时,我们经常需要将编号列表转换为表格以提高可读性。手动执行此任务可能非常耗时。好在 ONLYOFFICE 宏可以帮助您自动执行重复任务。在这篇文章中,我们将分步演示如何开发 ONLYOFFICE 宏,无缝地将编号列表转换为结构化表格。
创建宏
检索文档和编号段落
宏首先会访问活动文档并检索包含编号的所有段落:
const oDocument = Api.GetDocument();
const paragraphs = oDocument.GetAllNumberedParagraphs();
- Api.GetDocument() 检索当前打开的文档
- oDocument.GetAllNumberedParagraphs() 收集所有使用编号样式的段落
将编号项目组织到行中
该脚本遍历每个编号段落并将它们排序到表格行中:
let tableData = [];
let currentRow = [];
for (let i = 0; i < paragraphs.length; i++) {
let level = paragraphs[i].GetNumbering().GetLevelIndex();
let text = paragraphs[i].GetText().trim();
if (level === 0) {
if (currentRow.length > 0) {
tableData.push(currentRow);
}
currentRow = [text];
} else if (level === 1 && currentRow.length > 0) {
currentRow.push(text);
}
}
if (currentRow.length > 0) {
tableData.push(currentRow);
}
- 该脚本循环遍历所有段落并检查其编号级别
- 0 级项目开始新行,而 1 级项目则作为列附加到当前行
- 处理后,所有收集的行都存储在 tableData 中
确定表格尺寸
在创建表格之前,宏会确定所需的列数。脚本通过查找 tableData 中最长的行来计算 maxColumns。这可确保表具有足够的列来正确容纳所有项目:
let maxColumns = 0;
for (let j = 0; j < tableData.length; j++) {
if (tableData[j].length > maxColumns) {
maxColumns = tableData[j].length;
}
}
创建并填充表格
现在我们已经组织好了数据,宏会创建一个表并插入提取的内容:
let table = Api.CreateTable(maxColumns, tableData.length);
oDocument.Push(table);
for (let row = 0; row < tableData.length; row++) {
for (let col = 0; col < tableData[row].length; col++) {
table
.GetCell(row, col)
.GetContent()
.GetElement(0)
.AddText(tableData[row][col]);
}
}
- Api.CreateTable(maxColumns, tableData.length) 创建具有所需尺寸的表格
- 该脚本循环遍历 tableData 并将相应的文本插入到每个单元格中
错误处理
为了确保顺利执行,使用 try…catch 块来捕获和记录错误。如果发生错误,它将记录在控制台中,帮助用户调试问题:
try {
// Code execution
} catch (error) {
console.log("Error: " + error.message);
}
现在让我们在 Youtube 看看宏的运行效果:
我们希望这个宏能帮助您简化工作中的重复任务。ONLYOFFICE 宏旨在简化您的工作并提高效率。我们鼓励您探索我们广泛的 API 库并创建适合您需求的自定义宏。如果您有任何想法或建议,请随时与我们联系。我们始终欢迎新想法和合作!祝您探索好运!
创建免费的 ONLYOFFICE 账户
在线查看并协作编辑文本文档、电子表格、幻灯片、表单和 PDF 文件。