Class AbstractXlsDataSource

  • All Implemented Interfaces:
    JRDataSource, JRRewindableDataSource
    Direct Known Subclasses:
    AbstractPoiXlsDataSource

    public abstract class AbstractXlsDataSource
    extends JRAbstractTextDataSource
    implements JRRewindableDataSource
    This data source implementation reads an XLSX or XLS stream.

    The default naming convention is to name report fields COLUMN_x and map each column with the field found at index x in each row (these indices start with 0). To avoid this situation, users can either specify a collection of column names or set a flag to read the column names from the first row of the XLSX or XLS file.

    Author:
    Sanda Zaharia (shertage@users.sourceforge.net)
    • Field Detail

      • EXCEPTION_MESSAGE_KEY_XLS_COLUMN_NAMES_MISMATCH_COLUMN_INDEXES

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_XLS_COLUMN_NAMES_MISMATCH_COLUMN_INDEXES
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_XLS_FIELD_VALUE_NOT_RETRIEVED

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_XLS_FIELD_VALUE_NOT_RETRIEVED
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_XLS_SHEET_INDEX_OUT_OF_RANGE

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_XLS_SHEET_INDEX_OUT_OF_RANGE
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_XLS_SHEET_NOT_FOUND

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_XLS_SHEET_NOT_FOUND
        See Also:
        Constant Field Values
      • PROPERTY_FIELD_COLUMN_NAME

        public static final java.lang.String PROPERTY_FIELD_COLUMN_NAME
        Property specifying the XLS column name for the dataset field.
        See Also:
        Constant Field Values
      • PROPERTY_FIELD_COLUMN_INDEX

        public static final java.lang.String PROPERTY_FIELD_COLUMN_INDEX
        Property specifying the XLS column index for the dataset field.
        See Also:
        Constant Field Values
      • INDEXED_COLUMN_PREFIX

        public static final java.lang.String INDEXED_COLUMN_PREFIX
        See Also:
        Constant Field Values
      • sheetSelection

        protected java.lang.String sheetSelection
      • dateFormat

        protected java.text.DateFormat dateFormat
      • numberFormat

        protected java.text.NumberFormat numberFormat
      • columnNames

        protected java.util.Map<java.lang.String,​java.lang.Integer> columnNames
      • useFirstRowAsHeader

        protected boolean useFirstRowAsHeader
      • columnIndexMap

        protected java.util.Map<java.lang.String,​java.lang.Integer> columnIndexMap
    • Constructor Detail

      • AbstractXlsDataSource

        public AbstractXlsDataSource()
    • Method Detail

      • getDateFormat

        public java.text.DateFormat getDateFormat()
        Gets the date format that will be used to parse date fields.
      • setDateFormat

        public void setDateFormat​(java.text.DateFormat dateFormat)
        Sets the desired date format to be used for parsing date fields.
      • getNumberFormat

        public java.text.NumberFormat getNumberFormat()
        Gets the number format that will be used to parse numeric fields.
      • setNumberFormat

        public void setNumberFormat​(java.text.NumberFormat numberFormat)
        Sets the desired number format to be used for parsing numeric fields.
      • setColumnNames

        public void setColumnNames​(java.lang.String[] columnNames)
        Specifies an array of strings representing column names matching field names in the report template.
      • setColumnNames

        public void setColumnNames​(java.lang.String[] columnNames,
                                   int[] columnIndexes)
        Specifies an array of strings representing column names matching field names in the report template and an array of integers representing the column indexes in the sheet. Both array parameters must be not-null and have the same number of values.
      • setColumnIndexes

        public void setColumnIndexes​(java.lang.Integer[] columnIndexes)
        Specifies an array of integers representing the column indexes in the sheet.
      • setUseFirstRowAsHeader

        public void setUseFirstRowAsHeader​(boolean useFirstRowAsHeader)
        Specifies whether the first row of the XLS file should be considered a table header, containing column names matching field names in the report template.
      • close

        public abstract void close()
        Closes the reader. Users of this data source should close it after usage.
      • checkReadStarted

        protected abstract void checkReadStarted()
      • getColumnNames

        public java.util.Map<java.lang.String,​java.lang.Integer> getColumnNames()
      • getSheetSelection

        public java.lang.String getSheetSelection()
      • setSheetSelection

        public void setSheetSelection​(java.lang.String sheetSelection)