/** * Import the model according to reversed dependency order among model objects: book, sheet, * defined name, cells, chart, pictures, validation. */ @Override public SBook imports(InputStream is, String bookName) throws IOException { // clear cache for reuse importedStyle.clear(); importedFont.clear(); workbook = createPoiBook(is); book = SBooks.createBook(bookName); // book.setDefaultCellStyle(importCellStyle(workbook.getCellStyleAt((short) 0), false)); // //ZSS-780 // ZSS-854 importDefaultCellStyles(); importNamedStyles(); // ZSS-1140 importExtraStyles(); setBookType(book); // ZSS-715: Enforce internal Locale.US Locale so formula is in consistent internal format Locale old = Locales.setThreadLocal(Locale.US); SBookSeries bookSeries = book.getBookSeries(); boolean isCacheClean = bookSeries.isAutoFormulaCacheClean(); try { bookSeries.setAutoFormulaCacheClean(false); // disable it to avoid // unnecessary clean up // during importing importExternalBookLinks(); int numberOfSheet = workbook.getNumberOfSheets(); for (int i = 0; i < numberOfSheet; i++) { Sheet poiSheet = workbook.getSheetAt(i); importSheet(poiSheet, i); SSheet sheet = book.getSheet(i); importTables(poiSheet, sheet); // ZSS-855, ZSS-1011 } importNamedRange(); for (int i = 0; i < numberOfSheet; i++) { SSheet sheet = book.getSheet(i); Sheet poiSheet = workbook.getSheetAt(i); for (Row poiRow : poiSheet) { importRow(poiRow, sheet); } importColumn(poiSheet, sheet); importMergedRegions(poiSheet, sheet); importDrawings(poiSheet, sheet); importValidation(poiSheet, sheet); importAutoFilter(poiSheet, sheet); importSheetProtection(poiSheet, sheet); // ZSS-576 } } finally { book.getBookSeries().setAutoFormulaCacheClean(isCacheClean); Locales.setThreadLocal(old); } return book; }
@Test public void picture() { File outFile = ImExpTestUtil.write( ImExpTestUtil.loadBook(PICTURE_IMPORT_FILE_UNDER_TEST, "XSSFBook"), EXPORTER_TYPE); SBook book = ImExpTestUtil.loadBook(outFile, DEFAULT_BOOK_NAME); picture(book); SSheet sheet2 = book.getSheet(1); assertEquals(2, sheet2.getPictures().size()); SPicture flowerJpg = sheet2.getPicture(0); assertEquals(Format.JPG, flowerJpg.getFormat()); assertEquals(569, flowerJpg.getAnchor().getWidth()); assertEquals(427, flowerJpg.getAnchor().getHeight()); // different spec in XLS SPicture rainbowGif = sheet2.getPicture(1); assertEquals(Format.GIF, rainbowGif.getFormat()); assertEquals(613, rainbowGif.getAnchor().getWidth()); assertEquals(345, rainbowGif.getAnchor().getHeight()); }
@Test public void exportWidthSplitTest() { SBook book = SBooks.createBook("book1"); SSheet sheet1 = book.createSheet("Sheet1"); int defaultWidth = 100; sheet1.setDefaultColumnWidth(defaultWidth); sheet1.setDefaultRowHeight(200); Assert.assertEquals(defaultWidth, sheet1.getDefaultColumnWidth()); Assert.assertEquals(200, sheet1.getDefaultRowHeight()); Iterator<SColumnArray> arrays = sheet1.getColumnArrayIterator(); Assert.assertFalse(arrays.hasNext()); Assert.assertNull(sheet1.getColumnArray(0)); sheet1.setupColumnArray(0, 8).setWidth(10); sheet1.setupColumnArray(11, 255); arrays = sheet1.getColumnArrayIterator(); SColumnArray array = arrays.next(); Assert.assertEquals(0, array.getIndex()); Assert.assertEquals(8, array.getLastIndex()); Assert.assertEquals(10, array.getWidth()); array = arrays.next(); Assert.assertEquals(9, array.getIndex()); Assert.assertEquals(10, array.getLastIndex()); Assert.assertEquals(defaultWidth, array.getWidth()); array = arrays.next(); Assert.assertEquals(11, array.getIndex()); Assert.assertEquals(255, array.getLastIndex()); Assert.assertEquals(defaultWidth, array.getWidth()); ///////////// first export File outFile = ImExpTestUtil.writeBookToFile( book, ImExpTestUtil.DEFAULT_EXPORT_TARGET_PATH + ImExpTestUtil.DEFAULT_EXPORT_FILE_NAME_XLSX, EXPORTER_TYPE); SBook outBook = ImExpTestUtil.loadBook(outFile, "OutBook"); sheet1 = outBook.getSheet(0); // default width become 104px // Assert.assertEquals(defaultWidth, sheet1.getDefaultColumnWidth()); Assert.assertEquals(200, sheet1.getDefaultRowHeight()); arrays = sheet1.getColumnArrayIterator(); Assert.assertTrue(arrays.hasNext()); arrays = sheet1.getColumnArrayIterator(); array = arrays.next(); Assert.assertEquals(0, array.getIndex()); Assert.assertEquals(8, array.getLastIndex()); Assert.assertEquals(10, array.getWidth()); array = arrays.next(); Assert.assertEquals(9, array.getIndex()); Assert.assertEquals(10, array.getLastIndex()); Assert.assertEquals(defaultWidth, array.getWidth()); array = arrays.next(); Assert.assertEquals(11, array.getIndex()); Assert.assertEquals(255, array.getLastIndex()); Assert.assertEquals(defaultWidth, array.getWidth()); ///////////// second export File outFile2 = ImExpTestUtil.writeBookToFile( outBook, ImExpTestUtil.DEFAULT_EXPORT_TARGET_PATH + ImExpTestUtil.DEFAULT_EXPORT_FILE_NAME_XLSX, EXPORTER_TYPE); SBook outBook2 = ImExpTestUtil.loadBook(outFile2, "OutBook"); sheet1 = outBook2.getSheet(0); // default width become 104px // Assert.assertEquals(100, sheet1.getDefaultColumnWidth()); Assert.assertEquals(200, sheet1.getDefaultRowHeight()); arrays = sheet1.getColumnArrayIterator(); Assert.assertTrue(arrays.hasNext()); arrays = sheet1.getColumnArrayIterator(); array = arrays.next(); Assert.assertEquals(0, array.getIndex()); Assert.assertEquals(8, array.getLastIndex()); Assert.assertEquals(10, array.getWidth()); array = arrays.next(); Assert.assertEquals(9, array.getIndex()); Assert.assertEquals(10, array.getLastIndex()); Assert.assertEquals(100, array.getWidth()); array = arrays.next(); Assert.assertEquals(11, array.getIndex()); Assert.assertEquals(255, array.getLastIndex()); Assert.assertEquals(100, array.getWidth()); }