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,java.io.Serializable
- Direct Known Subclasses:
ExcelXlsImporter
public abstract class AbstractExcelImporter extends AbstractImporter implements java.io.Serializable
Contains common importing behavior for XLS. SpreadsheetSBookmodel 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 ofXSSFCellStyle) to get content first for that codes can be easily moved to parent class.Note: Xlsx support in
XlsxImportersince Keikai 5.0- Since:
- 3.5.0
- Author:
- Hawk
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean_importCacheprotected SBookbooktarget book modelprotected java.util.Map<org.apache.poi.ss.usermodel.PictureData,java.lang.Integer>importedPictureDataprotected StyleCachestyleCacheKeep track of imported style during importing to avoid creating duplicated style objects.protected org.apache.poi.ss.usermodel.Workbookworkbooksource POI book-
Fields inherited from class io.keikai.range.impl.imexp.AbstractImporter
BOOK_TYPE_KEY
-
-
Constructor Summary
Constructors Constructor Description AbstractExcelImporter()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract org.apache.poi.ss.usermodel.WorkbookcreatePoiBook(java.io.InputStream is)protected 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 java.lang.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 voidimportDefaultCellStyles()protected abstract voidimportDrawings(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)Drawings includes charts and pictures.protected abstract voidimportExternalBookLinks()Excel uses external book links to map external book index and name.protected voidimportExtraStyles()protected SFontimportFont(org.apache.poi.ss.usermodel.CellStyle poiCellStyle)protected voidimportMergedRegions(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)protected voidimportNamedRange()Name should be created after sheets created.protected voidimportNamedStyles()protected abstract voidimportPassword(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)protected voidimportPicture(java.util.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 SRowimportRow(org.apache.poi.ss.usermodel.Row poiRow, SSheet sheet)SBookimports(java.io.InputStream is, java.lang.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 voidimportTableStyles()protected abstract voidimportValidation(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)protected booleanisImportCache()Returns if import file cached value.protected booleanmustCalc(SCell cell)protected 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 Detail
-
styleCache
protected StyleCache styleCache
Keep track of imported style during importing to avoid creating duplicated style objects.
-
book
protected SBook book
target book model
-
workbook
protected org.apache.poi.ss.usermodel.Workbook workbook
source POI book
-
importedPictureData
protected java.util.Map<org.apache.poi.ss.usermodel.PictureData,java.lang.Integer> importedPictureData
-
_importCache
protected boolean _importCache
-
-
Method Detail
-
importDefaultCellStyles
protected void importDefaultCellStyles()
-
importNamedStyles
protected void importNamedStyles()
-
imports
public SBook imports(java.io.InputStream is, java.lang.String bookName) throws java.io.IOException
Import the model according to reversed dependency order among model objects: book, sheet, defined name, cells, chart, pictures, validation.
-
createPoiBook
protected abstract org.apache.poi.ss.usermodel.Workbook createPoiBook(java.io.InputStream is) throws java.io.IOException- Throws:
java.io.IOException
-
setBookType
protected abstract void setBookType(SBook book)
-
getBookType
public static java.lang.String getBookType(SBook book)
Gets the book-type information ("xls" or "xlsx"), return null if not found- Parameters:
book-- Returns:
-
importColumn
protected abstract void importColumn(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. 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
protected SSheet importSheet(org.apache.poi.ss.usermodel.Sheet poiSheet, int poiSheetIndex)
-
importPassword
protected abstract void importPassword(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
-
importMergedRegions
protected void importMergedRegions(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
-
importDrawings
protected abstract void importDrawings(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)Drawings includes charts and pictures.
-
importValidation
protected abstract void importValidation(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
-
importCell
protected SCell importCell(org.apache.poi.ss.usermodel.Cell poiCell, int row, SSheet sheet)
-
importRichText
protected void importRichText(org.apache.poi.ss.usermodel.Cell poiCell, org.apache.poi.ss.usermodel.RichTextString poiRichTextString0, SRichText richText)
-
importCellStyle
protected SCellStyle importCellStyle(org.apache.poi.ss.usermodel.CellStyle poiCellStyle)
Convert CellStyle into NCellStyle- Parameters:
poiCellStyle-
-
importCellStyle
protected SCellStyle importCellStyle(org.apache.poi.ss.usermodel.CellStyle poiCellStyle, boolean inStyleTable)
-
importFont
protected SFont importFont(org.apache.poi.ss.usermodel.CellStyle poiCellStyle)
-
toZssFont
protected SFont toZssFont(org.apache.poi.ss.usermodel.Font poiFont)
-
createZssFont
protected SFont createZssFont(org.apache.poi.ss.usermodel.Font poiFont)
-
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
protected void importPicture(java.util.List<org.apache.poi.ss.usermodel.Picture> poiPictures, org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
-
importAutoFilter
protected void importAutoFilter(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)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
protected abstract void importTables(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)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
protected boolean mustCalc(SCell cell)
-
importConditionalFormatting
protected abstract void importConditionalFormatting(SSheet sheet, org.apache.poi.ss.usermodel.Sheet poiSheet)
-
importExtraStyles
protected void importExtraStyles()
-
importTableStyles
protected void importTableStyles()
-
-