管理大规模数据库可能会非常耗时,这时就能体会到 ONLYOFFICE 宏的好处,它可以自动执行任务并挖掘电子表格的潜力。 在这篇文章中,我们会展示如何创建一个用户友好的宏来隐藏或展开特定的行和列。 此外,虽然我们文件中的宏示例部分中有一个类似的宏,但是这个宏更加用户友好。
什么是 ONLYOFFICE 宏
如果您是一名资深 Microsoft Excel 用户,那么相信您已对于 VBA 宏非常熟悉了。这些宏是帮助您自动执行日常任务的小型脚本。无论是重构数据,还是在单元格区域中插入多个值。ONLYOFFICE 宏的基础是 JavaScript 语法与文档生成器 API 方法。基于 JavaSript 的宏易于使用,具有跨平台特性且十分安全。这就使得其与 VBA 相比有着显著的优势。
ONLYOFFICE 文档免费在线宏课程
近期,我们将开始发布有关 ONLYOFFICE 解决方案的免费视频课程。首个视频课程将关注 ONLYOFFICE 文档中的宏,现已在 YouTube 上提供。
本课程分为 4 节,每节时长大约在 5-10 分钟。您将了解宏的工作原理,以及一些实际的例子。为了方便起见,我们还在视频描述中添加了时间戳 – 只需点击一下即可转到您感兴趣的主题。
阅读这篇文章,了解更多。
构建宏
首先,我们检索 ONLYOFFICE 电子表格中当前活动的工作表并将其分配给变量工作表:
const sheet = Api.GetActiveSheet()
然后,我们定义一个范围,其中包括活动工作表的 A 列(单元格 A1)到 M 列(单元格 M1)的单元格。 我们将使用这个范围来操作列:
const range = sheet.GetRange("A1:M1")
然后就创建了 rowsToHide 数组,其中包含需要隐藏或取消隐藏的行号。 可以通过添加或删除行号来自定义该数组:
const rowsToHide = [5, 8, 9, 12, 14, 16, 21, 22, 31, 32, 33]
我们还创建了 columnsToHide 数组,包含需要隐藏或取消隐藏的列号:
const columnsToHide = [2,4,5,7,8,10,11,13,14,16]
然后,我们检索 rowsToHide 数组中指定的第一行的隐藏状态。 如果第一行被隐藏,则其余行和列的 SetHidden() 属性将设置为 false。 这使我们能够取消隐藏选定的行和列。 如果 rowsToHide 数组的第一行未隐藏,则 SetHidden() 属性设置为 true,以便于隐藏目标范围:
const hidden = sheet.GetRows(rowsToHide[0]).GetHidden()
然后我们执行 hideUnhideDetails 函数。 它负责根据隐藏状态隐藏或取消隐藏行和列。 具体如下:
function hideUnhideDetails(hidden) {
rowsToHide.forEach(row => {
sheet.GetRows(row).SetHidden(!hidden)
})
此循环迭代 rowsToHide 数组中指定的每个行号,并使用 SetHidden() 方法根据隐藏状态的相反情况隐藏或取消隐藏相应的行。 例如,如果 hide 为 true,则该行将取消隐藏(!hidden 为 false),如果 hide 为 false,则该行将被隐藏(!hidden 为 true)。
columnsToHide.forEach(column => {
range.GetCols(column).SetHidden(!hidden)
})
}
此循环迭代 columnsToHide 数组中指定的每个列号,然后使用 SetHidden() 隐藏或取消隐藏该列。
整个宏代码如下:
(function()
{
const sheet = Api.GetActiveSheet()
const range = sheet.GetRange("A1:M1")
const rowsToHide = [5, 8, 9, 12, 14, 16, 21, 22, 31, 32, 33]
const columnsToHide = [2,4,5,7,8,10,11,13,14,16]
const hidden = sheet.GetRows(rowsToHide[0]).GetHidden()
hideUnhideDetails(hidden)
// Unhide if hidden, Hide if unhidden
function hideUnhideDetails(hidden) {
rowsToHide.forEach(row => {
sheet.GetRows(row).SetHidden(!hidden)
})
columnsToHide.forEach(column => {
range.GetCols(column).SetHidden(!hidden)
})
}
})();
现在让我们运行宏, 看看视频了解它如何工作的!
希望该宏能够在管理大型数据库时节省您的时间和精力。 使用宏可以充分发挥 ONLYOFFICE 的潜力,显着提高工作效率。
希望您能继续探索 ONLYOFFICE 中宏的可能性,通过更深入地了解 ONLYOFFICE 宏,您可以自动执行任务、提高工作效率并自定义文档。 与我们分享您的想法和问题,期待与您合作。祝探索之路好运!
相关链接
如何将微软 Office 宏转换为 ONLYOFFICE 宏