Package | Description |
---|---|
org.dromara.hutool.poi.excel |
POI中对Excel读写的封装,入口为ExcelUtil
|
org.dromara.hutool.poi.excel.reader |
数据读取接口及实现,此包中定义了SheetReader,通过实现此接口,实现sheet中的数据读取为不同类型。
|
org.dromara.hutool.poi.excel.writer |
Excel生成封装
|
Modifier and Type | Method and Description |
---|---|
static ExcelWriter |
ExcelUtil.getWriter()
获得
ExcelWriter ,默认写出到第一个sheet不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用 setTargetFile(File) 方法自定义写出的文件,然后调用flush() 方法写出到文件 |
static ExcelWriter |
ExcelUtil.getWriter(boolean isXlsx)
获得
ExcelWriter ,默认写出到第一个sheet不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用 setTargetFile(File) 方法自定义写出的文件,然后调用flush() 方法写出到文件 |
static ExcelWriter |
ExcelUtil.getWriter(File templateFile)
获得
ExcelWriter ,默认写出到第一个sheet,名字为sheet1 |
static ExcelWriter |
ExcelUtil.getWriter(File templateFilePath,
String sheetName)
|
static ExcelWriter |
ExcelUtil.getWriter(String templateFilePath)
获得
ExcelWriter ,默认写出到第一个sheet |
static ExcelWriter |
ExcelUtil.getWriter(String templateFilePath,
String sheetName)
|
static ExcelWriter |
ExcelUtil.getWriterWithSheet(String sheetName)
获得
ExcelWriter ,默认写出到第一个sheet |
Modifier and Type | Method and Description |
---|---|
ExcelWriter |
ExcelReader.getWriter()
获取Excel写出器
在读取Excel并做一定编辑后,获取写出器写出,规则如下: 1. |
Modifier and Type | Class and Description |
---|---|
class |
BigExcelWriter
大数据量Excel写出,只支持XLSX(Excel07版本)
通过封装 SXSSFWorkbook ,限制对滑动窗口中的行的访问来实现其低内存使用。 |
Modifier and Type | Method and Description |
---|---|
ExcelWriter |
ExcelWriter.addIgnoredErrors(org.apache.poi.ss.util.CellRangeAddress cellRangeAddress,
org.apache.poi.ss.usermodel.IgnoredErrorType... ignoredErrorTypes)
设置忽略错误,即Excel中的绿色警告小标,只支持XSSFSheet和SXSSFSheet
见: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,
boolean useMergedCells,
float widthRatio)
设置某列为自动宽度。
|
ExcelWriter |
ExcelWriter.autoSizeColumnAll(boolean useMergedCells,
float widthRatio)
设置所有列为自动宽度,不考虑合并单元格
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
ExcelWriter.disableDefaultStyle()
禁用默认样式
|
ExcelWriter |
ExcelWriter.fillOnce(Map<?,?> rowMap)
填充非列表模板变量(一次性变量)
|
ExcelWriter |
ExcelWriter.flush()
将Excel Workbook刷出到预定义的文件
如果用户未自定义输出的文件,将抛出 NullPointerException 预定义文件可以通过 setTargetFile(File) 方法预定义,或者通过构造定义 |
ExcelWriter |
ExcelWriter.flush(boolean override)
将Excel Workbook刷出到预定义的文件
如果用户未自定义输出的文件,将抛出 NullPointerException 预定义文件可以通过 setTargetFile(File) 方法预定义,或者通过构造定义 |
ExcelWriter |
ExcelWriter.flush(File targetFile,
boolean override)
将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) |
ExcelWriter |
ExcelWriter.merge(org.apache.poi.ss.util.CellRangeAddress cellRangeAddress,
Object content,
boolean isSetHeaderStyle)
合并某行的单元格,并写入对象到单元格
|
ExcelWriter |
ExcelWriter.merge(org.apache.poi.ss.util.CellRangeAddress cellRangeAddress,
Object content,
org.apache.poi.ss.usermodel.CellStyle cellStyle)
合并单元格,并写入对象到单元格,使用指定的样式
指定样式传入null,则不使用任何样式 |
ExcelWriter |
ExcelWriter.merge(int lastColumn)
合并当前行的单元格
|
ExcelWriter |
ExcelWriter.merge(int lastColumn,
Object content)
合并当前行的单元格,并写入对象到单元格
如果写到单元格中的内容非null,行号自动+1,否则当前行号不变 |
ExcelWriter |
ExcelWriter.merge(int lastColumn,
Object content,
boolean isSetHeaderStyle)
合并某行的单元格,并写入对象到单元格
如果写到单元格中的内容非null,行号自动+1,否则当前行号不变 |
ExcelWriter |
ExcelWriter.passCurrentRow()
跳过当前行
|
ExcelWriter |
ExcelWriter.passRows(int rowNum)
跳过指定行数
|
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.setConfig(ExcelWriteConfig config) |
ExcelWriter |
ExcelWriter.setCurrentRow(int rowIndex)
设置当前所在行
|
ExcelWriter |
ExcelWriter.setCurrentRowToEnd()
定位到最后一行的后边,用于追加数据
|
ExcelWriter |
ExcelWriter.setDefaultRowHeight(int height)
设置默认行高,值为一个点的高度
|
ExcelWriter |
ExcelWriter.setFreezePane(int rowSplit)
设置窗口冻结,之前冻结的窗口会被覆盖,如果rowSplit为0表示取消冻结
|
ExcelWriter |
ExcelWriter.setFreezePane(int colSplit,
int rowSplit)
设置窗口冻结,之前冻结的窗口会被覆盖,如果colSplit和rowSplit为0表示取消冻结
|
ExcelWriter |
ExcelWriter.setHeaderOrFooter(String text,
Align align,
boolean isFooter)
设置Excel页眉或页脚
|
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.setTargetFile(File targetFile)
设置写出的目标文件
注意这个文件不能存在,存在则 flush() 时会被覆盖 |
ExcelWriter |
ExcelWriter.write(Iterable<?> data)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加
默认的,当当前行号为0时,写出标题(如果为Map或Bean),否则不写标题
data中元素支持的类型有:
1. |
ExcelWriter |
ExcelWriter.write(Iterable<?> data,
boolean isWriteKeyAsHead)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加
data中元素支持的类型有:
1. |
ExcelWriter |
ExcelWriter.write(Iterable<?> data,
Comparator<String> comparator)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加
data中元素支持的类型有:
1. |
ExcelWriter |
ExcelWriter.writeCellValue(int x,
int y,
Object value)
给指定单元格赋值,使用默认单元格样式
|
ExcelWriter |
ExcelWriter.writeCellValue(int x,
int y,
Object value,
boolean isHeader)
给指定单元格赋值,使用默认单元格样式
|
ExcelWriter |
ExcelWriter.writeCellValue(String locationRef,
Object value)
给指定单元格赋值,使用默认单元格样式
|
ExcelWriter |
ExcelWriter.writeCol(Map<?,? extends Iterable<?>> colMap,
boolean isWriteKeyAsHead)
从第1列开始按列写入数据(index 从0开始)
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1 |
ExcelWriter |
ExcelWriter.writeCol(Map<?,? extends Iterable<?>> colMap,
int startColIndex,
boolean isWriteKeyAsHead)
从指定列开始按列写入数据(index 从0开始)
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1 |
ExcelWriter |
ExcelWriter.writeCol(Object headerVal,
int colIndex,
Iterable<?> colData,
boolean isResetRowIndex)
|
ExcelWriter |
ExcelWriter.writeCol(Object headerVal,
Iterable<?> colData,
boolean isResetRowIndex)
|
ExcelWriter |
ExcelWriter.writeHeader(int x,
int y,
int rowCount,
RowGroup rowGroup)
写出分组标题行
|
ExcelWriter |
ExcelWriter.writeHeader(RowGroup rowGroup)
写出分组标题行
|
ExcelWriter |
ExcelWriter.writeHeaderRow(Iterable<?> rowData)
|
ExcelWriter |
ExcelWriter.writeLineShape(SimpleClientAnchor clientAnchor)
绘制线条
|
ExcelWriter |
ExcelWriter.writeLineShape(SimpleClientAnchor clientAnchor,
LineStyle lineStyle,
int lineWidth,
Color lineColor)
绘制线条
|
ExcelWriter |
ExcelWriter.writePic(byte[] pictureData,
ExcelPicType imgType,
SimpleClientAnchor clientAnchor)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 |
ExcelWriter |
ExcelWriter.writePic(File imgFile,
ExcelPicType imgType,
SimpleClientAnchor clientAnchor)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 |
ExcelWriter |
ExcelWriter.writePic(File imgFile,
int col1,
int row1,
int col2,
int row2)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 / 默认图片类型png / 默认的起始坐标和结束坐标都为0 |
ExcelWriter |
ExcelWriter.writePic(File imgFile,
SimpleClientAnchor clientAnchor)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 / 默认图片类型png |
ExcelWriter |
ExcelWriter.writeRow(Iterable<?> rowData)
|
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.writeSimpleShape(SimpleClientAnchor clientAnchor,
ShapeConfig shapeConfig)
绘制简单形状
|
Copyright © 2025. All rights reserved.