Package | Description |
---|---|
cn.hutool.poi.excel |
POI中对Excel读写的封装,入口为ExcelUtil
|
Modifier and Type | Class and Description |
---|---|
class |
BigExcelWriter
大数据量Excel写出,只支持XLSX(Excel07版本)
通过封装 SXSSFWorkbook ,限制对滑动窗口中的行的访问来实现其低内存使用。 |
Modifier and Type | Method and Description |
---|---|
ExcelWriter |
ExcelWriter.addHeaderAlias(String name,
String alias) |
ExcelWriter |
ExcelWriter.addIgnoredErrors(org.apache.poi.ss.util.CellRangeAddress cellRangeAddress,
org.apache.poi.ss.usermodel.IgnoredErrorType... ignoredErrorTypes)
设置忽略错误,即Excel中的绿色警告小标,只支持XSSFSheet
见:https://stackoverflow.com/questions/23488221/how-to-remove-warning-in-excel-using-apache-poi-in-java |
ExcelWriter |
ExcelWriter.addSelect(org.apache.poi.ss.util.CellRangeAddressList regions,
String... selectList)
增加下拉列表
|
ExcelWriter |
ExcelWriter.addSelect(int x,
int y,
String... selectList)
增加下拉列表
|
ExcelWriter |
ExcelWriter.addValidationData(org.apache.poi.ss.usermodel.DataValidation dataValidation)
增加单元格控制,比如下拉列表、日期验证、数字范围验证等
|
ExcelWriter |
ExcelWriter.autoSizeColumn(int columnIndex)
设置某列为自动宽度,不考虑合并单元格
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
ExcelWriter.autoSizeColumn(int columnIndex,
boolean useMergedCells)
设置某列为自动宽度
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
ExcelWriter.autoSizeColumn(int columnIndex,
boolean useMergedCells,
float widthRatio)
设置某列为自动宽度。
|
ExcelWriter |
ExcelWriter.autoSizeColumn(int columnIndex,
float widthRatio)
设置某列为自动宽度。
|
ExcelWriter |
ExcelWriter.autoSizeColumnAll()
设置所有列为自动宽度,不考虑合并单元格
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
ExcelWriter.autoSizeColumnAll(float widthRatio)
设置所有列为自动宽度,不考虑合并单元格
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
ExcelWriter.clearHeaderAlias() |
ExcelWriter |
ExcelWriter.disableDefaultStyle()
禁用默认样式
|
ExcelWriter |
ExcelWriter.flush()
将Excel Workbook刷出到预定义的文件
如果用户未自定义输出的文件,将抛出 NullPointerException 预定义文件可以通过 setDestFile(File) 方法预定义,或者通过构造定义 |
ExcelWriter |
ExcelWriter.flush(File destFile)
将Excel Workbook刷出到文件
如果用户未自定义输出的文件,将抛出 NullPointerException |
ExcelWriter |
ExcelWriter.flush(OutputStream out)
将Excel Workbook刷出到输出流
|
ExcelWriter |
ExcelWriter.flush(OutputStream out,
boolean isCloseOut)
将Excel Workbook刷出到输出流
|
ExcelWriter |
BigExcelWriter.flush(OutputStream out,
boolean isCloseOut) |
static ExcelWriter |
ExcelUtil.getWriter()
获得
ExcelWriter ,默认写出到第一个sheet不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用 setDestFile(File) 方法自定义写出的文件,然后调用flush() 方法写出到文件 |
ExcelWriter |
ExcelReader.getWriter()
获取Excel写出器
在读取Excel并做一定编辑后,获取写出器写出,规则如下: 1. |
static ExcelWriter |
ExcelUtil.getWriter(boolean isXlsx)
获得
ExcelWriter ,默认写出到第一个sheet不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用 setDestFile(File) 方法自定义写出的文件,然后调用flush() 方法写出到文件 |
static ExcelWriter |
ExcelUtil.getWriter(File destFile)
获得
ExcelWriter ,默认写出到第一个sheet,名字为sheet1 |
static ExcelWriter |
ExcelUtil.getWriter(File destFile,
String sheetName)
|
static ExcelWriter |
ExcelUtil.getWriter(String destFilePath)
获得
ExcelWriter ,默认写出到第一个sheet |
static ExcelWriter |
ExcelUtil.getWriter(String destFilePath,
String sheetName)
|
static ExcelWriter |
ExcelUtil.getWriterWithSheet(String sheetName)
获得
ExcelWriter ,默认写出到第一个sheet |
ExcelWriter |
ExcelWriter.merge(int lastColumn)
合并当前行的单元格
样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.merge(int firstRow,
int lastRow,
int firstColumn,
int lastColumn,
Object content,
boolean isSetHeaderStyle)
合并某行的单元格,并写入对象到单元格
样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.merge(int firstRow,
int lastRow,
int firstColumn,
int lastColumn,
Object content,
org.apache.poi.ss.usermodel.CellStyle cellStyle)
合并单元格,并写入对象到单元格,使用指定的样式
指定样式传入null,则不使用任何样式 |
ExcelWriter |
ExcelWriter.merge(int lastColumn,
Object content)
|
ExcelWriter |
ExcelWriter.merge(int lastColumn,
Object content,
boolean isSetHeaderStyle)
|
ExcelWriter |
ExcelWriter.passCurrentRow()
跳过当前行
|
ExcelWriter |
ExcelWriter.passRows(int rows)
跳过指定行数
|
ExcelWriter |
ExcelWriter.renameSheet(int sheet,
String sheetName)
重命名sheet
|
ExcelWriter |
ExcelWriter.renameSheet(String sheetName)
重命名当前sheet
|
ExcelWriter |
ExcelWriter.reset()
重置Writer,包括:
1.
|
ExcelWriter |
ExcelWriter.resetRow()
重置当前行为0
|
ExcelWriter |
ExcelWriter.setColumnStyle(int x,
org.apache.poi.ss.usermodel.CellStyle style)
设置列的默认样式
|
ExcelWriter |
ExcelWriter.setColumnStyleIfHasData(int x,
int y,
org.apache.poi.ss.usermodel.CellStyle style)
设置整个列的样式 仅对数据单元格设置 write后调用
setColumnStyle(int, org.apache.poi.ss.usermodel.CellStyle)
这个方法加的样式会使整列没有数据的单元格也有样式
特别是加背景色时很不美观 且有数据的单元格样式会被StyleSet中的样式覆盖掉 |
ExcelWriter |
ExcelWriter.setColumnWidth(int columnIndex,
int width)
设置列宽(单位为一个字符的宽度,例如传入width为10,表示10个字符的宽度)
|
ExcelWriter |
ExcelWriter.setCurrentRow(int rowIndex)
设置当前所在行
|
ExcelWriter |
ExcelWriter.setCurrentRowToEnd()
定位到最后一行的后边,用于追加数据
|
ExcelWriter |
ExcelWriter.setDefaultRowHeight(int height)
设置默认行高,值为一个点的高度
|
ExcelWriter |
ExcelWriter.setDestFile(File destFile)
设置写出的目标文件
|
ExcelWriter |
ExcelWriter.setFreezePane(int rowSplit)
设置窗口冻结,之前冻结的窗口会被覆盖,如果rowSplit为0表示取消冻结
|
ExcelWriter |
ExcelWriter.setFreezePane(int colSplit,
int rowSplit)
设置窗口冻结,之前冻结的窗口会被覆盖,如果colSplit和rowSplit为0表示取消冻结
|
ExcelWriter |
ExcelWriter.setHeaderAlias(Map<String,String> headerAlias) |
ExcelWriter |
ExcelWriter.setHeaderOrFooter(String text,
Align align,
boolean isFooter)
设置Excel页眉或页脚
|
ExcelWriter |
ExcelWriter.setOnlyAlias(boolean isOnlyAlias)
设置是否只保留别名中的字段值,如果为true,则不设置alias的字段将不被输出,false表示原样输出
Bean中设置@Alias时,setOnlyAlias是无效的,这个参数只和addHeaderAlias配合使用,原因是注解是Bean内部的操作,而addHeaderAlias是Writer的操作,不互通。
|
ExcelWriter |
ExcelWriter.setRowHeight(int rownum,
int height)
设置行高,值为一个点的高度
|
ExcelWriter |
ExcelWriter.setRowStyle(int y,
org.apache.poi.ss.usermodel.CellStyle style)
设置行样式
|
ExcelWriter |
ExcelWriter.setRowStyleIfHasData(int y,
org.apache.poi.ss.usermodel.CellStyle style)
对数据行整行加自定义样式 仅对数据单元格设置 write后调用
setRowStyle(int, org.apache.poi.ss.usermodel.CellStyle)
这个方法加的样式会使整行没有数据的单元格也有样式
特别是加背景色时很不美观 且有数据的单元格样式会被StyleSet中的样式覆盖掉 |
ExcelWriter |
ExcelWriter.setSheet(int sheetIndex) |
ExcelWriter |
ExcelWriter.setSheet(String sheetName) |
ExcelWriter |
ExcelWriter.setStyle(org.apache.poi.ss.usermodel.CellStyle style,
int x,
int y)
|
ExcelWriter |
ExcelWriter.setStyle(org.apache.poi.ss.usermodel.CellStyle style,
String locationRef)
|
ExcelWriter |
ExcelWriter.setStyleSet(StyleSet styleSet)
设置样式集,如果不使用样式,传入
null |
ExcelWriter |
ExcelWriter.write(Iterable<?> data)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式默认的,当当前行号为0时,写出标题(如果为Map或Bean),否则不写标题 data中元素支持的类型有: 1. |
ExcelWriter |
ExcelWriter.write(Iterable<?> data,
boolean isWriteKeyAsHead)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式
data中元素支持的类型有:
1. |
ExcelWriter |
ExcelWriter.write(Iterable<?> data,
Comparator<String> comparator)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式data中元素支持的类型有: 1. |
ExcelWriter |
ExcelWriter.writeCellValue(int x,
int y,
Object value)
给指定单元格赋值,使用默认单元格样式,默认不是Header
|
ExcelWriter |
ExcelWriter.writeCellValue(int x,
int y,
Object value,
boolean isHeader)
给指定单元格赋值,使用默认单元格样式
|
ExcelWriter |
ExcelWriter.writeCellValue(String locationRef,
Object value)
给指定单元格赋值,使用默认单元格样式,默认不是Header
|
ExcelWriter |
ExcelWriter.writeCellValue(String locationRef,
Object value,
boolean isHeader)
给指定单元格赋值,使用默认单元格样式
|
ExcelWriter |
ExcelWriter.writeCol(Map<?,? extends Iterable<?>> colMap,
boolean isWriteKeyAsHead)
从第1列开始按列写入数据(index 从0开始)
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.writeCol(Map<?,? extends Iterable<?>> colMap,
int startColIndex,
boolean isWriteKeyAsHead)
从指定列开始按列写入数据(index 从0开始)
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.writeCol(Object headerVal,
int colIndex,
Iterable<?> colData,
boolean isResetRowIndex)
为第指定列写入数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.writeCol(Object headerVal,
Iterable<?> colData,
boolean isResetRowIndex)
为第一列写入数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.writeHeadRow(Iterable<?> rowData)
写出一行标题数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.writeImg(byte[] pictureData,
int imgType,
int dx1,
int dy1,
int dx2,
int dy2,
int col1,
int row1,
int col2,
int row2)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 |
ExcelWriter |
ExcelWriter.writeImg(File imgFile,
int col1,
int row1,
int col2,
int row2)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 / 默认图片类型png / 默认的起始坐标和结束坐标都为0 |
ExcelWriter |
ExcelWriter.writeImg(File imgFile,
int dx1,
int dy1,
int dx2,
int dy2,
int col1,
int row1,
int col2,
int row2)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 / 默认图片类型png |
ExcelWriter |
ExcelWriter.writeImg(File imgFile,
int imgType,
int dx1,
int dy1,
int dx2,
int dy2,
int col1,
int row1,
int col2,
int row2)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 |
ExcelWriter |
ExcelWriter.writeRow(Iterable<?> rowData)
写出一行数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
ExcelWriter.writeRow(Map<?,?> rowMap,
boolean isWriteKeyAsHead)
将一个Map写入到Excel,isWriteKeyAsHead为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行values
如果rowMap为空(包括null),则写出空行 |
ExcelWriter |
ExcelWriter.writeRow(Object rowBean,
boolean isWriteKeyAsHead)
写出一行,根据rowBean数据类型不同,写出情况如下:
1、如果为Iterable,直接写出一行
2、如果为Map,isWriteKeyAsHead为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行values
3、如果为Bean,转为Map写出,isWriteKeyAsHead为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行values
|
ExcelWriter |
ExcelWriter.writeSecHeadRow(Iterable<?> rowData)
写出复杂标题的第二行标题数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式
此方法的逻辑是:将一行数据写出到当前行,遇到已存在的单元格跳过,不存在的创建并赋值。 |
Copyright © 2024. All rights reserved.