编辑电子表格可能很棘手,尤其是在处理多个数据相似的电子表格时。为了简化您的工作,让我们创建一个宏,将数据从一个电子表格复制到另一个电子表格,帮助您轻松处理大型电子表格。

创建宏
首先,我们在编辑器中访问当前工作表。然后,我们在 pastesheet 变量中访问要复制到的工作表,接着访问 oRange 变量,该变量指定了我们要处理的范围。
const oWorksheet = Api.GetActiveSheet();
const pastesheet = Api.GetSheet("Sheet2");
const oRange = oWorksheet.GetRange("A1:C10");
// If you want to copy a specific Selection to the new sheet
// var oRange = oWorksheet.GetSelection();
注:如果您想对一个选区进行操作,请使用 GetSelection() 方法,取消上面一行的注释。
接下来,我们在指定的范围内使用 for each 方法遍历范围内的每个单元格。
oRange.ForEach(function (range) {
利用回调函数中的参数范围,我们可以从第一个单元格开始访问每个单元格的数据。
const oValue = range.GetValue();
const oCharacters = range.GetCharacters(0, 2);
const oFont = oCharacters.GetFont();
const fontName = oFont.GetName();
const oSize = oFont.GetSize();
const isBold = oFont.GetBold();
const isItalic = oFont.GetItalic();
在 ForEach 方法中,我们首先提取单元格的值。然后提取值的初始字符,以了解其参数,如粗体、斜体等。然后提取字体名称和字体大小,以便在新工作表中实现它们。
if (oValue === null || oValue === "") {
pastesheet.GetRange(range).SetValue(" ");
}
如上图所示,在将数值放入新工作表之前,我们使用 if else 循环进行一些检查,以确保空单元格在新工作表中得到正确表示。
else {
oFont.SetName(fontName);
pastesheet.GetRange(range).SetValue(oValue);
pastesheet.GetRange(range).SetFontName(fontName);
pastesheet.GetRange(range).SetFontSize(oSize);
oWorksheet.GetRange(range).AutoFit(false, true);
if (isBold) {
pastesheet.GetRange(range).SetBold(true);
}
if (isItalic) {
pastesheet.GetRange(range).SetItalic(true);
}
}
最后,在 else 循环中,我们将数值放入相应的单元格中,然后赋予这些单元格粗体、斜体、字体名称和字体大小等属性。
完整宏
下面是整个宏的代码:
(function () {
const oWorksheet = Api.GetActiveSheet();
const pastesheet = Api.GetSheet("Sheet2");
const oRange = oWorksheet.GetRange("A1:C10");
// If you want to copy a specific Selection to the new sheet
// var oRange = oWorksheet.GetSelection();
oRange.ForEach(function (range) {
const oValue = range.GetValue();
const oCharacters = range.GetCharacters(0, 2);
const oFont = oCharacters.GetFont();
const fontName = oFont.GetName();
const oSize = oFont.GetSize();
const isBold = oFont.GetBold();
const isItalic = oFont.GetItalic();
if (oValue === null || oValue === "") {
pastesheet.GetRange(range).SetValue(" ");
} else {
oFont.SetName(fontName);
pastesheet.GetRange(range).SetValue(oValue);
pastesheet.GetRange(range).SetFontName(fontName);
pastesheet.GetRange(range).SetFontSize(oSize);
oWorksheet.GetRange(range).AutoFit(false, true);
if (isBold) {
pastesheet.GetRange(range).SetBold(true);
}
if (isItalic) {
pastesheet.GetRange(range).SetItalic(true);
}
}
});
})();
需要记住的几个要点
1. 确保在宏中指定的工作表名称存在,并且最好是空白工作表。
2. 确保从主工作表(父工作表)而不是新创建的工作表运行宏。
让我们运行宏,看看它是如何工作的!
下面是宏与 GetSelection() 方法配合使用的另一个示例:
希望该宏能成为您日常电子表格编辑工作中的好帮手!
不要错过利用ONLYOFFICE API强大功能的机会。我们广泛的API方法库是您将想法变为现实的关键。如果您有任何问题或创新理念,我们鼓励您与我们分享。我们非常重视您的意见,也非常期待与您合作的可能性。祝您在探索过程中一切顺利!


渝公网安备50010702505508