Я новичок как официальный пользователь, я всегда находил здесь свои ответы, но теперь я должен спросить.Как скопировать целые листы из больших файлов excel без разбора их с помощью Apache POI?
Я работаю с последней версией apache-poi 3.8 (с 2012/03/26), и мне нужно манипулировать одним файлом с несколькими листами, в которых только один содержит большой объем данных (более 1000 столбцов и 10 000 строк).
Мне нужно иметь больше столбцов на большом листе. Поэтому, с существующими существующими инструментами, я должен использовать SAX для его чтения и SXSSF, чтобы переписать его.
Файл Excel уже предварительно отформатирован с различными стилями и изображениями на каждом листе, поэтому будет полезно сделать копию файла без большого листа.
У меня есть вопрос: Как я могу сделать копию листа с SAX (из входного потока в) без его разбора? Я пытался сделать как в here, но в поле sheets
в XSSFWorkbook
есть набор видимости для личного пользования.
Удивительная вещь - иметь что-то вроде SXSSFWriter.SheetIterator
, если она будет в будущих планах для разработчиков POI.
Спасибо за чтение,
Артур
** Обновление * *
Файл слишком велик, чтобы быть в состоянии открыть его в качестве общей XSSFWorkbook (OutOfMemoryException) , Возможно ли создать и XSSFSheet из InputStream? Как и в следующем:
XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader
.getSheetsData();
int index = 0;
while (iter.hasNext()) {
InputStream stream = iter.next();
String sheetName = iter.getSheetName();
if (!sheetName.equalsIgnoreCase("BigSheetThatIDontWant")) {
Sheet newSheet = new XSSFSheet(stream);
stream.close();
}
++index;
}
Большое спасибо за ваши ответы.
* И +1 для Энди для итератора. * Но у Энди все еще есть 0 upvotes. –
OMG вы правы :) Вы знаете, что они говорят о многозадачных и старых процессорах ... –