|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.poi.xssf.streaming.SXSSFWorkbook
public class SXSSFWorkbook
Streaming version of XSSFWorkbook implementing the "BigGridDemo" strategy. This allows to write very large files without running out of memory as only a configurable portion of the rows are kept in memory at any one time. You can provide a template workbook which is used as basis for the written data. See https://poi.apache.org/spreadsheet/how-to.html#sxssf for details. Please note that there are still things that still may consume a large amount of memory based on which features you are using, e.g. merged regions, comments, ... are still only stored in memory and thus may require a lot of memory if used extensively. SXSSFWorkbook defaults to using inline strings instead of a shared strings table. This is very efficient, since no document content needs to be kept in memory, but is also known to produce documents that are incompatible with some clients. With shared strings enabled all unique strings in the document has to be kept in memory. Depending on your document content this could use a lot more resources than with shared strings disabled. Carefully review your memory budget and compatibility needs before deciding whether to enable shared strings or not.
Field Summary | |
---|---|
static int |
DEFAULT_WINDOW_SIZE
Specifies how many rows can be accessed at most via SXSSFSheet.getRow(int) . |
Fields inherited from interface org.apache.poi.ss.usermodel.Workbook |
---|
PICTURE_TYPE_DIB, PICTURE_TYPE_EMF, PICTURE_TYPE_JPEG, PICTURE_TYPE_PICT, PICTURE_TYPE_PNG, PICTURE_TYPE_WMF, SHEET_STATE_HIDDEN, SHEET_STATE_VERY_HIDDEN, SHEET_STATE_VISIBLE |
Constructor Summary | |
---|---|
SXSSFWorkbook()
Construct a new workbook with default row window size |
|
SXSSFWorkbook(int rowAccessWindowSize)
Construct an empty workbook and specify the window for row access. |
|
SXSSFWorkbook(XSSFWorkbook workbook)
Construct a workbook from a template. |
|
SXSSFWorkbook(XSSFWorkbook workbook,
int rowAccessWindowSize)
Constructs an workbook from an existing workbook. |
|
SXSSFWorkbook(XSSFWorkbook workbook,
int rowAccessWindowSize,
boolean compressTmpFiles)
Constructs an workbook from an existing workbook. |
|
SXSSFWorkbook(XSSFWorkbook workbook,
int rowAccessWindowSize,
boolean compressTmpFiles,
boolean useSharedStringsTable)
Constructs an workbook from an existing workbook. |
Method Summary | |
---|---|
int |
addOlePackage(byte[] oleData,
java.lang.String label,
java.lang.String fileName,
java.lang.String command)
Adds an OLE package manager object with the given content to the sheet |
int |
addPicture(byte[] pictureData,
int format)
Adds a picture to the workbook. |
void |
addToolPack(UDFFinder toopack)
Register a new toolpack in this workbook. |
Sheet |
cloneSheet(int sheetNum)
Not implemented for SXSSFWorkbook Create an Sheet from an existing sheet in the Workbook. |
void |
close()
Closes the underlying XSSFWorkbook and OPCPackage
on which this Workbook is based, if any. |
CellStyle |
createCellStyle()
Create a new Cell style and add it to the workbook's style table |
DataFormat |
createDataFormat()
Returns the instance of DataFormat for this workbook. |
Font |
createFont()
Create a new Font and add it to the workbook's font table |
Name |
createName()
Creates a new (uninitialised) defined name in this workbook |
SXSSFSheet |
createSheet()
Sreate an Sheet for this Workbook, adds it to the sheets and returns the high level representation. |
SXSSFSheet |
createSheet(java.lang.String sheetname)
Create an Sheet for this Workbook, adds it to the sheets and returns the high level representation. |
protected SheetDataWriter |
createSheetDataWriter()
|
boolean |
dispose()
Dispose of temporary files backing this workbook on disk. |
Font |
findFont(boolean bold,
short color,
short fontHeight,
java.lang.String name,
boolean italic,
boolean strikeout,
short typeOffset,
byte underline)
Finds a font that matches the one with the supplied attributes |
protected void |
flushSheets()
|
int |
getActiveSheetIndex()
Convenience method to get the active sheet. |
java.util.List<? extends Name> |
getAllNames()
Returns all defined names |
java.util.List<? extends PictureData> |
getAllPictures()
Gets all pictures from the Workbook. |
CellStyle |
getCellStyleAt(int idx)
Get the cell style object at the given index |
CreationHelper |
getCreationHelper()
Returns an object that handles instantiating concrete classes of the various instances one needs for HSSF, XSSF and SXSSF. |
int |
getFirstVisibleTab()
Gets the first tab that is displayed in the list of tabs in excel. |
Font |
getFontAt(short idx)
Get the font at the given index number |
boolean |
getForceFormulaRecalculation()
Whether Excel will be asked to recalculate all formulas when the workbook is opened. |
Row.MissingCellPolicy |
getMissingCellPolicy()
Retrieves the current policy on what to do when getting missing or blank cells from a row. |
Name |
getName(java.lang.String name)
|
Name |
getNameAt(int nameIndex)
Deprecated. 3.16. New projects should avoid accessing named ranges by index. |
int |
getNameIndex(java.lang.String name)
Deprecated. 3.16. New projects should avoid accessing named ranges by index. Use getName(String) instead. |
java.util.List<? extends Name> |
getNames(java.lang.String name)
Returns all defined names with the given name. |
short |
getNumberOfFonts()
Get the number of fonts in the font table |
int |
getNumberOfNames()
|
int |
getNumberOfSheets()
Get the number of spreadsheets in the workbook |
int |
getNumCellStyles()
Get the number of styles the workbook contains |
java.lang.String |
getPrintArea(int sheetIndex)
Retrieves the reference for the printarea of the specified sheet, the sheet name is appended to the reference even if it was not specified. |
int |
getRandomAccessWindowSize()
See the constructors for a more detailed description of the sliding window of rows. |
protected SharedStringsTable |
getSharedStringSource()
|
SXSSFSheet |
getSheet(java.lang.String name)
Get sheet with the given name |
SXSSFSheet |
getSheetAt(int index)
Get the Sheet object at the given index. |
int |
getSheetIndex(Sheet sheet)
Returns the index of the given sheet |
int |
getSheetIndex(java.lang.String name)
Returns the index of the sheet by his name |
java.lang.String |
getSheetName(int sheet)
Set the sheet name |
SheetVisibility |
getSheetVisibility(int sheetIx)
Get the visibility (visible, hidden, very hidden) of a sheet in this workbook |
SpreadsheetVersion |
getSpreadsheetVersion()
Returns the spreadsheet version (EXCLE2007) of this workbook |
XSSFWorkbook |
getXSSFWorkbook()
|
protected void |
injectData(ZipEntrySource zipEntrySource,
java.io.OutputStream out)
|
boolean |
isCompressTempFiles()
Get whether temp files should be compressed. |
protected boolean |
isDate1904()
|
boolean |
isHidden()
|
boolean |
isSheetHidden(int sheetIx)
Check whether a sheet is hidden. |
boolean |
isSheetVeryHidden(int sheetIx)
Check whether a sheet is very hidden. |
java.util.Iterator<Sheet> |
iterator()
Alias for sheetIterator() to allow
foreach loops |
int |
linkExternalWorkbook(java.lang.String name,
Workbook workbook)
Not implemented for SXSSFWorkbook Adds the LinkTable records required to allow formulas referencing the specified external workbook to be added to this one. |
void |
removeName(int index)
Deprecated. 3.16. New projects should use removeName(Name) . |
void |
removeName(Name name)
Remove the given defined name |
void |
removeName(java.lang.String name)
Deprecated. 3.16. New projects should use removeName(Name) . |
void |
removePrintArea(int sheetIndex)
Delete the printarea for the sheet specified |
void |
removeSheetAt(int index)
Removes sheet at the given index |
void |
setActiveSheet(int sheetIndex)
Convenience method to set the active sheet. |
void |
setCompressTempFiles(boolean compress)
Set whether temp files should be compressed. |
void |
setFirstVisibleTab(int sheetIndex)
Sets the first tab that is displayed in the list of tabs in excel. |
void |
setForceFormulaRecalculation(boolean value)
Whether the application shall perform a full recalculation when the workbook is opened. |
void |
setHidden(boolean hiddenFlag)
|
void |
setMissingCellPolicy(Row.MissingCellPolicy missingCellPolicy)
Sets the policy on what to do when getting missing or blank cells from a row. |
void |
setPrintArea(int sheetIndex,
int startColumn,
int endColumn,
int startRow,
int endRow)
For the Convenience of Java Programmers maintaining pointers. |
void |
setPrintArea(int sheetIndex,
java.lang.String reference)
Sets the printarea for the sheet provided |
void |
setSelectedTab(int index)
Sets the tab whose data is actually seen when the sheet is opened. |
void |
setSheetHidden(int sheetIx,
boolean hidden)
Hide or unhide a sheet. |
void |
setSheetHidden(int sheetIx,
int hidden)
Deprecated. |
void |
setSheetName(int sheet,
java.lang.String name)
Set the sheet name. |
void |
setSheetOrder(java.lang.String sheetname,
int pos)
Sets the order of appearance for a given sheet. |
void |
setSheetVisibility(int sheetIx,
SheetVisibility visibility)
Hide or unhide a sheet. |
java.util.Iterator<Sheet> |
sheetIterator()
Returns an iterator of the sheets in the workbook in sheet order. |
void |
write(java.io.OutputStream stream)
Write out this workbook to an OutputStream. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DEFAULT_WINDOW_SIZE
SXSSFSheet.getRow(int)
.
When a new node is created via SXSSFSheet.createRow(int)
and the total number
of unflushed records would exceed the specified value, then the
row with the lowest index value is flushed and cannot be accessed
via SXSSFSheet.getRow(int)
anymore.
Constructor Detail |
---|
public SXSSFWorkbook()
public SXSSFWorkbook(XSSFWorkbook workbook)
Construct a workbook from a template.
There are three use-cases to use SXSSFWorkbook(XSSFWorkbook) :max(rownum)
in the template sheet.
SXSSFWorkbook(XSSFWorkbook)
all internal windows are empty and
SXSSFSheet.getRow(int)
and SXSSFRow.getCell(int)
return null
.
workbook
- the template workbookpublic SXSSFWorkbook(XSSFWorkbook workbook, int rowAccessWindowSize)
When a new node is created via SXSSFSheet.createRow(int)
and the total number
of unflushed records would exceed the specified value, then the
row with the lowest index value is flushed and cannot be accessed
via SXSSFSheet.getRow(int)
anymore.
A value of -1
indicates unlimited access. In this case all
records that have not been flushed by a call to flush()
are available
for random access.
A value of 0
is not allowed because it would flush any newly created row
without having a chance to specify any cells.
rowAccessWindowSize
- the number of rows that are kept in memory until flushed out, see above.public SXSSFWorkbook(XSSFWorkbook workbook, int rowAccessWindowSize, boolean compressTmpFiles)
When a new node is created via SXSSFSheet.createRow(int)
and the total number
of unflushed records would exceed the specified value, then the
row with the lowest index value is flushed and cannot be accessed
via SXSSFSheet.getRow(int)
anymore.
A value of -1
indicates unlimited access. In this case all
records that have not been flushed by a call to flush()
are available
for random access.
A value of 0
is not allowed because it would flush any newly created row
without having a chance to specify any cells.
rowAccessWindowSize
- the number of rows that are kept in memory until flushed out, see above.compressTmpFiles
- whether to use gzip compression for temporary filespublic SXSSFWorkbook(XSSFWorkbook workbook, int rowAccessWindowSize, boolean compressTmpFiles, boolean useSharedStringsTable)
When a new node is created via SXSSFSheet.createRow(int)
and the total number
of unflushed records would exceed the specified value, then the
row with the lowest index value is flushed and cannot be accessed
via SXSSFSheet.getRow(int)
anymore.
A value of -1
indicates unlimited access. In this case all
records that have not been flushed by a call to flush()
are available
for random access.
A value of 0
is not allowed because it would flush any newly created row
without having a chance to specify any cells.
workbook
- the template workbookrowAccessWindowSize
- the number of rows that are kept in memory until flushed out, see above.compressTmpFiles
- whether to use gzip compression for temporary filesuseSharedStringsTable
- whether to use a shared strings tablepublic SXSSFWorkbook(int rowAccessWindowSize)
When a new node is created via SXSSFSheet.createRow(int)
and the total number
of unflushed records would exceed the specified value, then the
row with the lowest index value is flushed and cannot be accessed
via SXSSFSheet.getRow(int)
anymore.
A value of -1
indicates unlimited access. In this case all
records that have not been flushed by a call to flush()
are available
for random access.
A value of 0
is not allowed because it would flush any newly created row
without having a chance to specify any cells.
rowAccessWindowSize
- the number of rows that are kept in memory until flushed out, see above.Method Detail |
---|
public int getRandomAccessWindowSize()
public boolean isCompressTempFiles()
public void setCompressTempFiles(boolean compress)
SXSSF writes sheet data in temporary files (a temp file per-sheet)
and the size of these temp files can grow to to a very large size,
e.g. for a 20 MB csv data the size of the temp xml file become few GB large.
If the "compress" flag is set to true
then the temporary XML is gzipped.
Please note the the "compress" option may cause performance penalty.
Setting this option only affects compression for subsequent createSheet()
calls.
compress
- whether to compress temp files@Internal protected SharedStringsTable getSharedStringSource()
protected SheetDataWriter createSheetDataWriter() throws java.io.IOException
java.io.IOException
protected void injectData(ZipEntrySource zipEntrySource, java.io.OutputStream out) throws java.io.IOException
java.io.IOException
public XSSFWorkbook getXSSFWorkbook()
public int getActiveSheetIndex()
getActiveSheetIndex
in interface Workbook
public void setActiveSheet(int sheetIndex)
setActiveSheet
in interface Workbook
sheetIndex
- index of the active sheet (0-based)public int getFirstVisibleTab()
getFirstVisibleTab
in interface Workbook
public void setFirstVisibleTab(int sheetIndex)
setFirstVisibleTab
in interface Workbook
sheetIndex
- the first tab that to display in the list of tabs (0-based)public void setSheetOrder(java.lang.String sheetname, int pos)
setSheetOrder
in interface Workbook
sheetname
- the name of the sheet to reorderpos
- the position that we want to insert the sheet into (0 based)public void setSelectedTab(int index)
setSelectedTab
in interface Workbook
index
- the index of the sheet to select (0 based)Sheet.setSelected(boolean)
public void setSheetName(int sheet, java.lang.String name)
setSheetName
in interface Workbook
sheet
- number (0 based)
java.lang.IllegalArgumentException
- if the name is greater than 31 chars or contains /\?*[]
Workbook.createSheet(String)
,
WorkbookUtil.createSafeSheetName(String nameProposal)
public java.lang.String getSheetName(int sheet)
getSheetName
in interface Workbook
sheet
- sheet number (0 based)
public int getSheetIndex(java.lang.String name)
getSheetIndex
in interface Workbook
name
- the sheet name
public int getSheetIndex(Sheet sheet)
getSheetIndex
in interface Workbook
sheet
- the sheet to look up
public SXSSFSheet createSheet()
createSheet
in interface Workbook
public SXSSFSheet createSheet(java.lang.String sheetname)
createSheet
in interface Workbook
sheetname
- sheetname to set for the sheet.
java.lang.IllegalArgumentException
- if the name is greater than 31 chars or contains /\?*[]
WorkbookUtil.createSafeSheetName(String nameProposal)
@NotImplemented public Sheet cloneSheet(int sheetNum)
cloneSheet
in interface Workbook
public int getNumberOfSheets()
getNumberOfSheets
in interface Workbook
public java.util.Iterator<Sheet> sheetIterator()
sheetIterator
in interface Workbook
public java.util.Iterator<Sheet> iterator()
sheetIterator()
to allow
foreach loops
iterator
in interface java.lang.Iterable<Sheet>
public SXSSFSheet getSheetAt(int index)
getSheetAt
in interface Workbook
index
- of the sheet number (0-based physical and logical)
public SXSSFSheet getSheet(java.lang.String name)
getSheet
in interface Workbook
name
- of the sheet
null
if it does not existpublic void removeSheetAt(int index)
removeSheetAt
in interface Workbook
index
- of the sheet to remove (0-based)public Font createFont()
createFont
in interface Workbook
public Font findFont(boolean bold, short color, short fontHeight, java.lang.String name, boolean italic, boolean strikeout, short typeOffset, byte underline)
findFont
in interface Workbook
null
public short getNumberOfFonts()
getNumberOfFonts
in interface Workbook
public Font getFontAt(short idx)
getFontAt
in interface Workbook
idx
- index number (0-based)
public CellStyle createCellStyle()
createCellStyle
in interface Workbook
public int getNumCellStyles()
getNumCellStyles
in interface Workbook
public CellStyle getCellStyleAt(int idx)
getCellStyleAt
in interface Workbook
idx
- index within the set of styles (0-based)
public void close() throws java.io.IOException
XSSFWorkbook
and OPCPackage
on which this Workbook is based, if any.
Once this has been called, no further operations, updates or reads should be performed on the Workbook.
close
in interface java.io.Closeable
close
in interface Workbook
java.io.IOException
public void write(java.io.OutputStream stream) throws java.io.IOException
write
in interface Workbook
stream
- - the java OutputStream you wish to write to
java.io.IOException
- if anything can't be written.protected void flushSheets() throws java.io.IOException
java.io.IOException
public boolean dispose()
public int getNumberOfNames()
getNumberOfNames
in interface Workbook
public Name getName(java.lang.String name)
getName
in interface Workbook
name
- the name of the defined name
null
if not found.public java.util.List<? extends Name> getNames(java.lang.String name)
getNames
in interface Workbook
name
- the name of the defined name
public java.util.List<? extends Name> getAllNames()
getAllNames
in interface Workbook
@Deprecated @Removal(version="3.18") public Name getNameAt(int nameIndex)
getNameAt
in interface Workbook
nameIndex
- position of the named range (0-based)
java.lang.IllegalArgumentException
- if the supplied index is invalidpublic Name createName()
createName
in interface Workbook
@Deprecated @Removal(version="3.18") public int getNameIndex(java.lang.String name)
getName(String)
instead.
getNameIndex
in interface Workbook
name
- the name of the defined name
-1
if not found.@Deprecated @Removal(version="3.18") public void removeName(int index)
removeName(Name)
.
removeName
in interface Workbook
index
- named range index (0 based)@Deprecated @Removal(version="3.18") public void removeName(java.lang.String name)
removeName(Name)
.
removeName
in interface Workbook
name
- the name of the defined namepublic void removeName(Name name)
removeName
in interface Workbook
name
- the name to removepublic void setPrintArea(int sheetIndex, java.lang.String reference)
i.e. Reference = $A$1:$B$2
setPrintArea
in interface Workbook
sheetIndex
- Zero-based sheet index (0 Represents the first sheet to keep consistent with java)reference
- Valid name Reference for the Print Areapublic void setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow)
setPrintArea
in interface Workbook
sheetIndex
- Zero-based sheet index (0 = First Sheet)startColumn
- Column to begin printareaendColumn
- Column to end the printareastartRow
- Row to begin the printareaendRow
- Row to end the printareasetPrintArea(int, String)
public java.lang.String getPrintArea(int sheetIndex)
getPrintArea
in interface Workbook
sheetIndex
- Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
public void removePrintArea(int sheetIndex)
removePrintArea
in interface Workbook
sheetIndex
- Zero-based sheet index (0 = First Sheet)public Row.MissingCellPolicy getMissingCellPolicy()
The default is to return blank and null cells.
Row.MissingCellPolicy
getMissingCellPolicy
in interface Workbook
public void setMissingCellPolicy(Row.MissingCellPolicy missingCellPolicy)
Row.getCell(int)
. See
Row.MissingCellPolicy
setMissingCellPolicy
in interface Workbook
public DataFormat createDataFormat()
createDataFormat
in interface Workbook
public int addPicture(byte[] pictureData, int format)
addPicture
in interface Workbook
pictureData
- The bytes of the pictureformat
- The format of the picture.
Workbook.PICTURE_TYPE_EMF
,
Workbook.PICTURE_TYPE_WMF
,
Workbook.PICTURE_TYPE_PICT
,
Workbook.PICTURE_TYPE_JPEG
,
Workbook.PICTURE_TYPE_PNG
,
Workbook.PICTURE_TYPE_DIB
public java.util.List<? extends PictureData> getAllPictures()
getAllPictures
in interface Workbook
PictureData
objects.)public CreationHelper getCreationHelper()
getCreationHelper
in interface Workbook
protected boolean isDate1904()
@NotImplemented(value="XSSFWorkbook#isHidden is not implemented") public boolean isHidden()
isHidden
in interface Workbook
false
if this workbook is not visible in the GUI@NotImplemented(value="XSSFWorkbook#setHidden is not implemented") public void setHidden(boolean hiddenFlag)
setHidden
in interface Workbook
hiddenFlag
- pass false
to make the workbook visible in the GUIpublic boolean isSheetHidden(int sheetIx)
Workbook
Note that a sheet could instead be set to be very hidden, which is different
(Workbook.isSheetVeryHidden(int)
)
isSheetHidden
in interface Workbook
sheetIx
- Number
true
if sheet is hiddenWorkbook.getSheetVisibility(int)
public boolean isSheetVeryHidden(int sheetIx)
Workbook
This is different from the normal hidden status
(Workbook.isSheetHidden(int)
)
isSheetVeryHidden
in interface Workbook
sheetIx
- sheet index to check
true
if sheet is very hiddenWorkbook.getSheetVisibility(int)
public SheetVisibility getSheetVisibility(int sheetIx)
Workbook
getSheetVisibility
in interface Workbook
sheetIx
- the index of the sheet
public void setSheetHidden(int sheetIx, boolean hidden)
Workbook
setSheetHidden
in interface Workbook
sheetIx
- the sheet index (0-based)hidden
- True to mark the sheet as hidden, false otherwiseWorkbook.setSheetVisibility(int, SheetVisibility)
@Removal(version="3.18") @Deprecated public void setSheetHidden(int sheetIx, int hidden)
Workbook
setSheetHidden
in interface Workbook
sheetIx
- the sheet index (0-based)hidden
- one of the following Workbook
constants:
Workbook.SHEET_STATE_VISIBLE
,
Workbook.SHEET_STATE_HIDDEN
, or
Workbook.SHEET_STATE_VERY_HIDDEN
.public void setSheetVisibility(int sheetIx, SheetVisibility visibility)
Workbook
setSheetVisibility
in interface Workbook
sheetIx
- the sheet index (0-based)visibility
- the sheet visibility to set@NotImplemented public int linkExternalWorkbook(java.lang.String name, Workbook workbook)
linkExternalWorkbook
in interface Workbook
name
- The name the workbook will be referenced as in formulasworkbook
- The open workbook to fetch the link required information from
java.lang.RuntimeException
- stating that this method is not implemented yet.public void addToolPack(UDFFinder toopack)
addToolPack
in interface Workbook
toopack
- the toolpack to registerpublic void setForceFormulaRecalculation(boolean value)
Typically you want to force formula recalculation when you modify cell formulas or values of a workbook previously created by Excel. When set to 0, this flag will tell Excel that it needs to recalculate all formulas in the workbook the next time the file is opened.
setForceFormulaRecalculation
in interface Workbook
value
- true if the application will perform a full recalculation of
workbook values when the workbook is openedpublic boolean getForceFormulaRecalculation()
getForceFormulaRecalculation
in interface Workbook
public SpreadsheetVersion getSpreadsheetVersion()
getSpreadsheetVersion
in interface Workbook
public int addOlePackage(byte[] oleData, java.lang.String label, java.lang.String fileName, java.lang.String command) throws java.io.IOException
Workbook
addOlePackage
in interface Workbook
oleData
- the payloadlabel
- the label of the payloadfileName
- the original filenamecommand
- the command to open the payload
java.io.IOException
- if the object can't be embedded
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |