Скопируйте лист, используя copyToEnd () - PullRequest
0 голосов
/ 16 мая 2019

Я испытываю электронную таблицу Keikai. После импорта файла Excel я хотел скопировать лист с помощью copyToEnd (), но он удаляет мой исходный лист. Я делаю это неправильно?

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

1 Ответ

0 голосов
/ 20 мая 2019

В настоящее время 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() не должен автоматически изменять активную рабочую книгу, если только она не является единственной рабочей книгой, связанной с приложением.

...