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

public abstract class AbstractExcelImporter extends AbstractImporter implements Serializable
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

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
     
    protected SBook
    target book model
    protected Map<org.apache.poi.ss.usermodel.PictureData,Integer>
     
    protected StyleCache
    Keep track of imported style during importing to avoid creating duplicated style objects.
    protected org.apache.poi.ss.usermodel.Workbook
    source POI book

    Fields inherited from class io.keikai.range.impl.imexp.AbstractImporter

    BOOK_TYPE_KEY
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract org.apache.poi.ss.usermodel.Workbook
     
    protected SFont
    createZssFont(org.apache.poi.ss.usermodel.Font poiFont)
     
    protected abstract int
    getAnchorHeightInPx(org.apache.poi.ss.usermodel.ClientAnchor anchor, org.apache.poi.ss.usermodel.Sheet poiSheet)
     
    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)
    static String
    Gets the book-type information ("xls" or "xlsx"), return null if not found
    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)
     
    protected abstract int
    getXoffsetInPixel(org.apache.poi.ss.usermodel.ClientAnchor clientAnchor, org.apache.poi.ss.usermodel.Sheet poiSheet)
     
    protected abstract int
    getYoffsetInPixel(org.apache.poi.ss.usermodel.ClientAnchor clientAnchor, org.apache.poi.ss.usermodel.Sheet poiSheet)
     
    protected void
    importAutoFilter(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
    POI AutoFilter.getFilterColumn(i) sometimes returns null.
    protected void
    importAutoFilterColumns(org.apache.poi.ss.usermodel.AutoFilter poiFilter, SAutoFilter zssFilter, int numberOfColumn)
     
    protected SCell
    importCell(org.apache.poi.ss.usermodel.Cell poiCell, int row, SSheet sheet)
     
    protected SCellStyle
    importCellStyle(org.apache.poi.ss.usermodel.CellStyle poiCellStyle)
    Convert CellStyle into NCellStyle
    protected SCellStyle
    importCellStyle(org.apache.poi.ss.usermodel.CellStyle poiCellStyle, boolean inStyleTable)
     
    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.
    protected abstract void
    importConditionalFormatting(SSheet sheet, org.apache.poi.ss.usermodel.Sheet poiSheet)
     
    protected void
     
    protected abstract void
    importDrawings(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
    Drawings includes charts and pictures.
    protected abstract void
    Excel uses external book links to map external book index and name.
    protected void
     
    protected SFont
    importFont(org.apache.poi.ss.usermodel.CellStyle poiCellStyle)
     
    protected void
    importMergedRegions(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
     
    protected void
    Name should be created after sheets created.
    protected void
     
    protected abstract void
    importPassword(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
     
    protected void
    importPicture(List<org.apache.poi.ss.usermodel.Picture> poiPictures, org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
     
    protected void
    importRichText(org.apache.poi.ss.usermodel.Cell poiCell, org.apache.poi.ss.usermodel.RichTextString poiRichTextString0, SRichText richText)
     
    protected SRow
    importRow(org.apache.poi.ss.usermodel.Row poiRow, SSheet sheet)
     
    imports(InputStream is, String bookName)
    Import the model according to reversed dependency order among model objects: book, sheet, defined name, cells, chart, pictures, validation.
    protected SSheet
    importSheet(org.apache.poi.ss.usermodel.Sheet poiSheet, int poiSheetIndex)
     
    protected void
    importSheetDefaultColumnWidth(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
     
    protected abstract void
    importSheetProtection(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
    POI SheetProtection.
    protected abstract void
    importTables(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
    POI sheet tables
    protected void
     
    protected abstract void
    importValidation(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
     
    protected boolean
    Returns if import file cached value.
    protected boolean
     
    protected abstract void
     
    void
    setImportCache(boolean b)
    Set if import Excel cached value.
    protected boolean
    skipName(org.apache.poi.ss.usermodel.Name definedName)
     
    protected ViewAnchor
    toViewAnchor(org.apache.poi.ss.usermodel.Sheet poiSheet, org.apache.poi.ss.usermodel.ClientAnchor clientAnchor)
     
    protected SFont
    toZssFont(org.apache.poi.ss.usermodel.Font poiFont)
     

    Methods inherited from class io.keikai.range.impl.imexp.AbstractImporter

    imports, imports

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • 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 Map<org.apache.poi.ss.usermodel.PictureData,Integer> importedPictureData
    • _importCache

      protected boolean _importCache
  • Constructor Details

    • AbstractExcelImporter

      public AbstractExcelImporter()
  • Method Details

    • importDefaultCellStyles

      protected void importDefaultCellStyles()
    • importNamedStyles

      protected void importNamedStyles()
    • imports

      public SBook imports(InputStream is, String bookName) throws IOException
      Import the model according to reversed dependency order among model objects: book, sheet, defined name, cells, chart, pictures, validation.
      Specified by:
      imports in interface SImporter
      Parameters:
      is - the input stream
      bookName - 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

      protected abstract void setBookType(SBook book)
    • getBookType

      public static 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)
    • importRow

      protected SRow importRow(org.apache.poi.ss.usermodel.Row poiRow, 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(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 sheet
      sheet - 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 sheet
      sheet - destination sheet
    • importTables

      protected abstract void importTables(org.apache.poi.ss.usermodel.Sheet poiSheet, SSheet sheet)
      POI sheet tables
      Parameters:
      poiSheet - source POI sheet
      sheet - destination sheet
      Since:
      3.8.0
    • setImportCache

      public void setImportCache(boolean b)
      Set if import Excel cached value.
      Overrides:
      setImportCache in class AbstractImporter
      Since:
      3.7.0
    • isImportCache

      protected boolean isImportCache()
      Returns if import file cached value.
      Overrides:
      isImportCache in class AbstractImporter
      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()