首页 > 解决方案 > 使用 copyToEnd() 复制工作表

问题描述

我正在试用 Keikai 电子表格。导入 excel 文件后,我想使用 copyToEnd() 复制工作表,但它会删除我的原始工作表。我做错了吗?

Workbook srcBook = spreadsheet.imports("book1", new File(BOOK_FOLDER, "book1.xlsx"));
srcBook.getWorksheet().copyToEnd(spreadsheet.getWorkbook());

标签: spreadsheet

解决方案


目前,spreadsheet.import()会将活动工作簿更改为刚刚导入的工作簿;即在这种情况下book1.xlsx。所以原始工作表没有被删除,但只是不活动(不可见)。

因此,srcBook实际上等于spreadsheet.getWorkbook()导入后。当您将 复制srcBook.getWorksheet()到 时spreadsheet.getWorkbook(),您将复制同一本书中的工作表。您将在活动书中看到 2 张重复的工作表。

解决方法是:

final Workbook book = spreadsheet.getWorkbook();
Workbook srcBook = spreadsheet.imports("book1.xlsx", new File(BOOK_FOLDER, "book1.xlsx"));
srcBook.getWorksheet().copyToEnd(book);
spreadsheet.setActiveWorkbook(book.getName());
System.out.println("currentBook: spreadsheet.getWorkbook():" + spreadsheet.getWorkbook().getName());

在未来的版本中,spreadsheet.imports()不应自动更改活动工作簿,除非它是唯一绑定到应用程序的工作簿。


推荐阅读