Package io.keikai.range.impl.imexp
Class AbstractExcelImporter
java.lang.Object
io.keikai.range.impl.imexp.AbstractImporter
io.keikai.range.impl.imexp.AbstractExcelImporter
- All Implemented Interfaces:
SImporter,Serializable
- Direct Known Subclasses:
ExcelXlsImporter
Contains common importing behavior for XLS. Spreadsheet
SBook model including following information: Book: name Sheet: name,
(default) column width, (default) row height, hidden row (column), row
(column) style, freeze, merge, protection, named range , gridline display
Cell: type, value, font with color and style, type offset(normal or
subscript), background color, border's type and color , data format,
alignment, wrap, locked, fill pattern
We use XLS common interface (e.g. CellStyle instead of
XSSFCellStyle) to get content first for that codes can be easily
moved to parent class.
Note: Xlsx support in XlsxImporter since Keikai 5.0
- Since:
- 3.5.0
- Author:
- Hawk
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected SBooktarget book modelprotected StyleCacheKeep track of imported style during importing to avoid creating duplicated style objects.protected org.apache.poi.ss.usermodel.Workbooksource POI bookFields inherited from class io.keikai.range.impl.imexp.AbstractImporter
BOOK_TYPE_KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract org.apache.poi.ss.usermodel.Workbookprotected SFontcreateZssFont(org.apache.poi.ss.usermodel.Font poiFont) protected abstract intgetAnchorHeightInPx(org.apache.poi.ss.usermodel.ClientAnchor anchor, org.apache.poi.ss.usermodel.Sheet poiSheet) protected abstract intgetAnchorWidthInPx(org.apache.poi.ss.usermodel.ClientAnchor anchor, org.apache.poi.ss.usermodel.Sheet poiSheet) If in same column: anchorWidthInFirstColumn + anchor width in inter-columns + anchorWidthInLastColumn (dx2) no in same column: anchorWidthInLastColumn - offsetInFirstColumn (dx1)static StringgetBookType(SBook book) Gets the book-type information ("xls" or "xlsx"), return null if not foundprotected org.apache.poi.ss.usermodel.FontgetPoiFontFromRichText(org.apache.poi.ss.usermodel.Workbook book, org.apache.poi.ss.usermodel.Cell cell, org.apache.poi.ss.usermodel.RichTextString rstr, int run) protected abstract intgetXoffsetInPixel(org.apache.poi.ss.usermodel.ClientAnchor clientAnchor, org.apache.poi.ss.usermodel.Sheet poiSheet) protected abstract intgetYoffsetInPixel(org.apache.poi.ss.usermodel.ClientAnchor clientAnchor, org.apache.poi.ss.usermodel.Sheet poiSheet) protected voidimportAutoFilter(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) POI AutoFilter.getFilterColumn(i) sometimes returns null.protected voidimportAutoFilterColumns(org.apache.poi.ss.usermodel.AutoFilter poiFilter, SAutoFilter zssFilter, int numberOfColumn) protected SCellimportCell(org.apache.poi.ss.usermodel.Cell poiCell, int row, SSheet sheet) protected SCellStyleimportCellStyle(org.apache.poi.ss.usermodel.CellStyle poiCellStyle) Convert CellStyle into NCellStyleprotected SCellStyleimportCellStyle(org.apache.poi.ss.usermodel.CellStyle poiCellStyle, boolean inStyleTable) protected abstract voidimportColumn(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) When a column is hidden with default width, we don't import the width for it's 0.protected abstract voidimportConditionalFormatting(SSheet sheet, org.apache.poi.ss.usermodel.Sheet poiSheet) protected voidprotected abstract voidimportDrawings(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) Drawings includes charts and pictures.protected abstract voidExcel uses external book links to map external book index and name.protected voidprotected SFontimportFont(org.apache.poi.ss.usermodel.CellStyle poiCellStyle) protected voidimportMergedRegions(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) protected voidName should be created after sheets created.protected voidprotected abstract voidimportPassword(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) protected voidimportPicture(List<org.apache.poi.ss.usermodel.Picture> poiPictures, org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) protected voidimportRichText(org.apache.poi.ss.usermodel.Cell poiCell, org.apache.poi.ss.usermodel.RichTextString poiRichTextString0, SRichText richText) protected SRowimports(InputStream is, String bookName) Import the model according to reversed dependency order among model objects: book, sheet, defined name, cells, chart, pictures, validation.protected SSheetimportSheet(org.apache.poi.ss.usermodel.Sheet poiSheet, int poiSheetIndex) protected voidimportSheetDefaultColumnWidth(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) protected abstract voidimportSheetProtection(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) POI SheetProtection.protected abstract voidimportTables(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) POI sheet tablesprotected voidprotected abstract voidimportValidation(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) protected booleanReturns if import file cached value.protected booleanprotected abstract voidsetBookType(SBook book) voidsetImportCache(boolean b) Set if import Excel cached value.protected booleanskipName(org.apache.poi.ss.usermodel.Name definedName) protected ViewAnchortoViewAnchor(org.apache.poi.ss.usermodel.Sheet poiSheet, org.apache.poi.ss.usermodel.ClientAnchor clientAnchor) protected SFonttoZssFont(org.apache.poi.ss.usermodel.Font poiFont) Methods inherited from class io.keikai.range.impl.imexp.AbstractImporter
imports, imports
-
Field Details
-
styleCache
Keep track of imported style during importing to avoid creating duplicated style objects. -
book
target book model -
workbook
protected org.apache.poi.ss.usermodel.Workbook workbooksource POI book -
importedPictureData
-
_importCache
protected boolean _importCache
-
-
Constructor Details
-
AbstractExcelImporter
public AbstractExcelImporter()
-
-
Method Details
-
importDefaultCellStyles
protected void importDefaultCellStyles() -
importNamedStyles
protected void importNamedStyles() -
imports
Import the model according to reversed dependency order among model objects: book, sheet, defined name, cells, chart, pictures, validation.- Specified by:
importsin interfaceSImporter- Parameters:
is- the input streambookName- the book name for imported book- Returns:
- the book instance
- Throws:
IOException
-
createPoiBook
protected abstract org.apache.poi.ss.usermodel.Workbook createPoiBook(InputStream is) throws IOException - Throws:
IOException
-
setBookType
-
getBookType
Gets the book-type information ("xls" or "xlsx"), return null if not found- Parameters:
book-- Returns:
-
importColumn
When a column is hidden with default width, we don't import the width for it's 0. We also don't import the width that equals to default width for optimization.- Parameters:
poiSheet-sheet-
-
getAnchorWidthInPx
protected abstract int getAnchorWidthInPx(org.apache.poi.ss.usermodel.ClientAnchor anchor, org.apache.poi.ss.usermodel.Sheet poiSheet) If in same column: anchorWidthInFirstColumn + anchor width in inter-columns + anchorWidthInLastColumn (dx2) no in same column: anchorWidthInLastColumn - offsetInFirstColumn (dx1) -
getAnchorHeightInPx
protected abstract int getAnchorHeightInPx(org.apache.poi.ss.usermodel.ClientAnchor anchor, org.apache.poi.ss.usermodel.Sheet poiSheet) -
importNamedRange
protected void importNamedRange()Name should be created after sheets created. A special defined name, _xlnm._FilterDatabase (xlsx) or _FilterDatabase (xls), stores the selected cells for auto-filter -
skipName
protected boolean skipName(org.apache.poi.ss.usermodel.Name definedName) -
importExternalBookLinks
protected abstract void importExternalBookLinks()Excel uses external book links to map external book index and name. The formula contains full external book name or index only (e.g [book2.xlsx] or [1]). We needs such table for parsing and evaluating formula when necessary. -
importSheetDefaultColumnWidth
protected void importSheetDefaultColumnWidth(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) -
importSheet
-
importPassword
-
importMergedRegions
-
importDrawings
Drawings includes charts and pictures. -
importValidation
-
importRow
-
importCell
-
importRichText
protected void importRichText(org.apache.poi.ss.usermodel.Cell poiCell, org.apache.poi.ss.usermodel.RichTextString poiRichTextString0, SRichText richText) -
importCellStyle
Convert CellStyle into NCellStyle- Parameters:
poiCellStyle-
-
importCellStyle
protected SCellStyle importCellStyle(org.apache.poi.ss.usermodel.CellStyle poiCellStyle, boolean inStyleTable) -
importFont
-
toZssFont
-
createZssFont
-
toViewAnchor
protected ViewAnchor toViewAnchor(org.apache.poi.ss.usermodel.Sheet poiSheet, org.apache.poi.ss.usermodel.ClientAnchor clientAnchor) -
getXoffsetInPixel
protected abstract int getXoffsetInPixel(org.apache.poi.ss.usermodel.ClientAnchor clientAnchor, org.apache.poi.ss.usermodel.Sheet poiSheet) -
getYoffsetInPixel
protected abstract int getYoffsetInPixel(org.apache.poi.ss.usermodel.ClientAnchor clientAnchor, org.apache.poi.ss.usermodel.Sheet poiSheet) -
importPicture
-
importAutoFilter
POI AutoFilter.getFilterColumn(i) sometimes returns null. A POI FilterColumn object only exists when we have set a criteria on that column. For example, if we enable auto filter on 2 columns, but we only set criteria on 2nd column. Thus, the size of filter column is 1. There is only one FilterColumn object and its column id is 1. Only getFilterColumn(1) will return a FilterColumn, other get null.- Parameters:
poiSheet- source POI sheetsheet- destination sheet
-
importAutoFilterColumns
protected void importAutoFilterColumns(org.apache.poi.ss.usermodel.AutoFilter poiFilter, SAutoFilter zssFilter, int numberOfColumn) -
getPoiFontFromRichText
protected org.apache.poi.ss.usermodel.Font getPoiFontFromRichText(org.apache.poi.ss.usermodel.Workbook book, org.apache.poi.ss.usermodel.Cell cell, org.apache.poi.ss.usermodel.RichTextString rstr, int run) -
importSheetProtection
protected abstract void importSheetProtection(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet) POI SheetProtection.- Parameters:
poiSheet- source POI sheetsheet- destination sheet
-
importTables
POI sheet tables- Parameters:
poiSheet- source POI sheetsheet- destination sheet- Since:
- 3.8.0
-
setImportCache
public void setImportCache(boolean b) Set if import Excel cached value.- Overrides:
setImportCachein classAbstractImporter- Since:
- 3.7.0
-
isImportCache
protected boolean isImportCache()Returns if import file cached value.- Overrides:
isImportCachein classAbstractImporter- Since:
- 3.7.0
-
mustCalc
-
importConditionalFormatting
protected abstract void importConditionalFormatting(SSheet sheet, org.apache.poi.ss.usermodel.Sheet poiSheet) -
importExtraStyles
protected void importExtraStyles() -
importTableStyles
protected void importTableStyles()
-