找回密码
 立即注册

QQ登录

只需一步,快速开始

FuKun

注册会员

2

主题

9

帖子

25

积分

注册会员

积分
25
  • 111

    金币

  • 2

    主题

  • 9

    帖子

最新发帖
FuKun
注册会员   /  发表于:2022-1-14 10:10  /   查看:1674  /  回复:6
1金币
本帖最后由 Derrick.Jiao 于 2022-1-30 11:25 编辑

从一个workbook全量复制sheet到另一个workbook,会报错,影响复制的速度。我已经关闭了计算,为啥这时候还会找公式引用的sheet页?

会报错类似 某某sheet页找不到:
  1. <blockquote><blockquote>10:00:26.310 [main] WARN com.grapecity.documents.excel.D.aA - 复制表 '其他填报' 时出现错误。
复制代码


测试代码:
  1. Workbook workbook = new Workbook();

  2.         XlsxOpenOptions options = new XlsxOpenOptions();
  3.         options.setDoNotRecalculateAfterOpened(true);
  4.         options.setImportFlags(EnumSet.of(ImportFlags.Data, ImportFlags.Formulas));
  5.         workbook.open("D:\\xf_test.xlsx", options);
  6.         workbook.setEnableCalculation(false);

  7.         long start = System.currentTimeMillis();
  8.         Workbook workbook1 = new Workbook();
  9.         IWorksheets worksheets = workbook.getWorksheets();
  10.         workbook1.setEnableCalculation(false);

  11.         workbook.getActiveSheet().copy(workbook1);
  12.         for (IWorksheet worksheet : worksheets) {
  13.             worksheet.copy(workbook1);
  14.         }
  15.         long between = System.currentTimeMillis() - start;
  16.         String formatBetween = DateUtil.formatBetween(between);
  17.         System.out.println("耗费时间SPEND TIME:" + formatBetween);
复制代码


最佳答案

查看完整内容

问题已收到,我们这边需要做进一步确认,此贴先改为保留处理,有进展会在本帖更新(DOCXLS-5399)_________________________________________________ 经确认,当复制的工作表中的公式当前包含还不存在的工作表参考时,就会出现提示警告。 如果丢失的工作表被添加了,那么公式就能够正常工作。 也就是说因为复制是一个顺序操作,当复制公式引用的表单还没复制到时,会提示,复制完后公式就会正常了。

6 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-14 10:10:31
来自 7#
本帖最后由 Derrick.Jiao 于 2022-1-30 11:25 编辑
FuKun 发表于 2022-1-14 14:05
请看附件里的excel

问题已收到,我们这边需要做进一步确认,此贴先改为保留处理,有进展会在本帖更新(DOCXLS-5399)_________________________________________________
经确认,当复制的工作表中的公式当前包含还不存在的工作表参考时,就会出现提示警告。

如果丢失的工作表被添加了,那么公式就能够正常工作。

也就是说因为复制是一个顺序操作,当复制公式引用的表单还没复制到时,会提示,复制完后公式就会正常了。
回复 使用道具 举报
FuKun
注册会员   /  发表于:2022-1-14 10:12:19
2#
10:00:26.310 [main] WARN com.grapecity.documents.excel.D.aA - 复制表 '其他填报' 时出现错误。
目标工作簿不包含一个或多个引用的表:
'资产负债表' 在 $D$3
'资产负债表' 在 $E$3
'资产负债表' 在 $F$3
'资产负债表' 在 $G$3
'资产负债表' 在 $H$3
'资产负债表' 在 $I$3
'资产负债表' 在 $J$3
'资产负债表' 在 $K$3

耗费时间SPEND TIME:10秒191毫秒
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-14 11:14:26
3#
你好,请再详细描述一下你的具体需求。如果想要复制整个workbook,可以考虑使用toJSON、fromJSON。另外,请把上面测试代码对应的表单提供,我们这边测试一下。
回复 使用道具 举报
FuKun
注册会员   /  发表于:2022-1-14 11:30:13
4#
Derrick.Jiao 发表于 2022-1-14 11:14
你好,请再详细描述一下你的具体需求。如果想要复制整个workbook,可以考虑使用toJSON、fromJSON。另外,请 ...

使用toJSON、fromJSON 速度没有copy的快,现在就是想copy的时候如果避免公式引用报错,如上面的代码“复制表 '其他填报' 时出现错误...”,我已经关闭了自动计算。
业务是:引用同一个模板文件,创建不同的文件,速度要快,目前发现copy是最快的。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-14 13:59:36
5#
FuKun 发表于 2022-1-14 11:30
使用toJSON、fromJSON 速度没有copy的快,现在就是想copy的时候如果避免公式引用报错,如上面的代码“复 ...

我这边测试未能复现你描述的问题,请把上述表单上传,我们这边调研一下。
回复 使用道具 举报
FuKun
注册会员   /  发表于:2022-1-14 14:05:56
6#
Derrick.Jiao 发表于 2022-1-14 13:59
我这边测试未能复现你描述的问题,请把上述表单上传,我们这边调研一下。

请看附件里的excel

xf_test.rar

5.69 MB, 下载次数: 61

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部