个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

使用 ONLYOFFICE 宏复制电子表格

原创
软件开发
来源:ONLYOFFICE
文档管理
文档处理
文件处理
Microsoft
office
excel
数据分析
数据管理
2024-01-19
文档管理
文档处理
文件处理
Microsoft
office
excel
数据分析
数据管理

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



创建宏

首先,我们在编辑器中访问当前工作表。然后,我们在 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方法库是您将想法变为现实的关键。如果您有任何问题或创新理念,我们鼓励您与我们分享。我们非常重视您的意见,也非常期待与您合作的可能性。祝您在探索过程中一切顺利!


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508