在处理文档时,我们经常需要将编号列表转换为表格以提高可读性。手动执行此任务可能非常耗时。好在 ONLYOFFICE 宏可以帮助您自动执行重复任务。在这篇文章中,我们将分步演示如何开发 ONLYOFFICE 宏,无缝地将编号列表转换为结构化表格。
关于 ONLYOFFICE
ONLYOFFICE 是一个国际开源项目,专注于高级和安全的文档处理,可提供文本文档、电子表格、幻灯片、表单和 PDF 编辑器。ONLYOFFICE 文档高度兼容微软 Office 格式,并提供数百种格式化和样式工具,帮助您实现复杂的编辑功能。
ONLYOFFICE 不仅适合个人用户,更为企业和商业开发提供了强大的支持。如果您需要为您的企业集成强大的编辑功能,或是为您的应用程序、网站或其他解决方案提供强大的编辑功能,您可以选择企业版 / 开发者版。观看下方视频,了解关于我们的更多信息:
ONLYOFFICE,兼顾协作与安全的开源办公套件
什么是 ONLYOFFICE 宏
如果您是一名资深 Microsoft Excel 用户,那么相信您已对于 VBA 宏非常熟悉了。这些宏是帮助您自动执行日常任务的小型脚本。无论是重构数据,还是在单元格区域中插入多个值。ONLYOFFICE 宏的基础是 JavaScript 语法与文档生成器 API 方法。基于 JavaSript 的宏易于使用,具有跨平台特性且十分安全。这就使得其与 VBA 相比有着显著的优势。
下面一起来看看如何创建宏,帮助您将编号列表转换为表格。
创建宏
检索文档和编号段落
宏首先会访问活动文档并检索包含编号的所有段落:
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);
}
我们希望这个宏能帮助您简化工作中的重复任务。ONLYOFFICE 宏旨在简化您的工作并提高效率。我们鼓励您探索我们广泛的 API 库并创建适合您需求的自定义宏。如果您有任何想法或建议,请随时与我们联系。我们始终欢迎新想法和合作!祝您探索好运!
立即获取 ONLYOFFICE
立即下载适用于 Windows、macOS 或 Linux 的 ONLYOFFICE 桌面编辑器,或注册一个免费的协作空间帐户,使用宏帮你提升工作效率!
ONLYOFFICE 桌面编辑器https://www.onlyoffice.com/zh/desktop.aspx?utm_source=csdn&utm_medium=article&utm_campaign=using-onlyoffice-macros
协作空间https://www.onlyoffice.com/zh/docspace.aspx?utm_source=csdn&utm_medium=article&utm_campaign=using-onlyoffice-macros