public class ExcelWriter extends ExcelBase<ExcelWriter>
1. 编辑已存在的Excel,可写出原Excel文件,也可写出到其它地方(到文件或到流) 2. 新建一个空的Excel工作簿,完成数据填充后写出(到文件或到流)
Constructor and Description |
---|
ExcelWriter()
构造,默认生成xls格式的Excel文件
此构造不传入写出的Excel文件路径,只能调用 flush(OutputStream) 方法写出到流若写出到文件,还需调用 setDestFile(File) 方法自定义写出的文件,然后调用flush() 方法写出到文件 |
ExcelWriter(boolean isXlsx)
|
ExcelWriter(boolean isXlsx,
String sheetName)
|
ExcelWriter(File destFile)
构造,默认写出到第一个sheet,第一个sheet名为sheet1
|
ExcelWriter(File destFile,
String sheetName)
构造
|
ExcelWriter(org.apache.poi.ss.usermodel.Sheet sheet)
构造
此构造不传入写出的Excel文件路径,只能调用 flush(OutputStream) 方法写出到流若写出到文件,还需调用 setDestFile(File) 方法自定义写出的文件,然后调用flush() 方法写出到文件 |
ExcelWriter(String destFilePath)
构造,默认写出到第一个sheet,第一个sheet名为sheet1
|
ExcelWriter(String destFilePath,
String sheetName)
构造
|
ExcelWriter(org.apache.poi.ss.usermodel.Workbook workbook,
String sheetName)
构造
此构造不传入写出的Excel文件路径,只能调用 flush(OutputStream) 方法写出到流若写出到文件,还需调用 setDestFile(File) 方法自定义写出的文件,然后调用flush() 方法写出到文件 |
Modifier and Type | Method and Description |
---|---|
ExcelWriter |
addHeaderAlias(String name,
String alias)
增加标题别名
|
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 |
addSelect(org.apache.poi.ss.util.CellRangeAddressList regions,
String... selectList)
增加下拉列表
|
ExcelWriter |
addSelect(int x,
int y,
String... selectList)
增加下拉列表
|
ExcelWriter |
addValidationData(org.apache.poi.ss.usermodel.DataValidation dataValidation)
增加单元格控制,比如下拉列表、日期验证、数字范围验证等
|
ExcelWriter |
autoSizeColumn(int columnIndex)
设置某列为自动宽度,不考虑合并单元格
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
autoSizeColumn(int columnIndex,
boolean useMergedCells)
设置某列为自动宽度
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
autoSizeColumn(int columnIndex,
boolean useMergedCells,
float widthRatio)
设置某列为自动宽度。
|
ExcelWriter |
autoSizeColumn(int columnIndex,
float widthRatio)
设置某列为自动宽度。
|
ExcelWriter |
autoSizeColumnAll()
设置所有列为自动宽度,不考虑合并单元格
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
autoSizeColumnAll(float widthRatio)
设置所有列为自动宽度,不考虑合并单元格
此方法必须在指定列数据完全写出后调用才有效。 |
ExcelWriter |
clearHeaderAlias()
清空标题别名,key为Map中的key,value为别名
|
void |
close()
关闭工作簿
如果用户设定了目标文件,先写出目标文件后给关闭工作簿 |
protected void |
closeWithoutFlush()
关闭工作簿但是不写出
|
org.apache.poi.ss.usermodel.Font |
createFont()
创建字体
|
ExcelWriter |
disableDefaultStyle()
禁用默认样式
|
ExcelWriter |
flush()
将Excel Workbook刷出到预定义的文件
如果用户未自定义输出的文件,将抛出 NullPointerException 预定义文件可以通过 setDestFile(File) 方法预定义,或者通过构造定义 |
ExcelWriter |
flush(File destFile)
将Excel Workbook刷出到文件
如果用户未自定义输出的文件,将抛出 NullPointerException |
ExcelWriter |
flush(OutputStream out)
将Excel Workbook刷出到输出流
|
ExcelWriter |
flush(OutputStream out,
boolean isCloseOut)
将Excel Workbook刷出到输出流
|
org.apache.poi.ss.usermodel.CellStyle |
getCellStyle()
获取单元格样式,获取样式后可自定义样式
|
String |
getContentType()
获取Content-Type头对应的值,可以通过调用以下方法快速设置下载Excel的头信息:
response.setContentType(excelWriter.getContentType());
|
int |
getCurrentRow()
获得当前行
|
String |
getDisposition(String fileName,
Charset charset)
获取Content-Disposition头对应的值,可以通过调用以下方法快速设置下载Excel的头信息:
response.setHeader("Content-Disposition", excelWriter.getDisposition("test.xlsx", CharsetUtil.CHARSET_UTF_8));
|
org.apache.poi.ss.usermodel.CellStyle |
getHeadCellStyle()
获取头部样式,获取样式后可自定义样式
|
StyleSet |
getStyleSet()
获取样式集,样式集可以自定义包括:
1. |
ExcelWriter |
merge(int lastColumn)
合并当前行的单元格
样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
merge(int firstRow,
int lastRow,
int firstColumn,
int lastColumn,
Object content,
boolean isSetHeaderStyle)
合并某行的单元格,并写入对象到单元格
样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
merge(int firstRow,
int lastRow,
int firstColumn,
int lastColumn,
Object content,
org.apache.poi.ss.usermodel.CellStyle cellStyle)
合并单元格,并写入对象到单元格,使用指定的样式
指定样式传入null,则不使用任何样式 |
ExcelWriter |
merge(int lastColumn,
Object content)
|
ExcelWriter |
merge(int lastColumn,
Object content,
boolean isSetHeaderStyle)
|
ExcelWriter |
passCurrentRow()
跳过当前行
|
ExcelWriter |
passRows(int rows)
跳过指定行数
|
ExcelWriter |
renameSheet(int sheet,
String sheetName)
重命名sheet
|
ExcelWriter |
renameSheet(String sheetName)
重命名当前sheet
|
ExcelWriter |
reset()
重置Writer,包括:
1.
|
ExcelWriter |
resetRow()
重置当前行为0
|
ExcelWriter |
setColumnStyle(int x,
org.apache.poi.ss.usermodel.CellStyle style)
设置列的默认样式
|
ExcelWriter |
setColumnStyleIfHasData(int x,
int y,
org.apache.poi.ss.usermodel.CellStyle style)
设置整个列的样式 仅对数据单元格设置 write后调用
setColumnStyle(int, org.apache.poi.ss.usermodel.CellStyle)
这个方法加的样式会使整列没有数据的单元格也有样式
特别是加背景色时很不美观 且有数据的单元格样式会被StyleSet中的样式覆盖掉 |
ExcelWriter |
setColumnWidth(int columnIndex,
int width)
设置列宽(单位为一个字符的宽度,例如传入width为10,表示10个字符的宽度)
|
ExcelWriter |
setCurrentRow(int rowIndex)
设置当前所在行
|
ExcelWriter |
setCurrentRowToEnd()
定位到最后一行的后边,用于追加数据
|
ExcelWriter |
setDefaultRowHeight(int height)
设置默认行高,值为一个点的高度
|
ExcelWriter |
setDestFile(File destFile)
设置写出的目标文件
|
ExcelWriter |
setFreezePane(int rowSplit)
设置窗口冻结,之前冻结的窗口会被覆盖,如果rowSplit为0表示取消冻结
|
ExcelWriter |
setFreezePane(int colSplit,
int rowSplit)
设置窗口冻结,之前冻结的窗口会被覆盖,如果colSplit和rowSplit为0表示取消冻结
|
ExcelWriter |
setHeaderAlias(Map<String,String> headerAlias)
设置标题行的别名Map
|
ExcelWriter |
setHeaderOrFooter(String text,
Align align,
boolean isFooter)
设置Excel页眉或页脚
|
ExcelWriter |
setOnlyAlias(boolean isOnlyAlias)
设置是否只保留别名中的字段值,如果为true,则不设置alias的字段将不被输出,false表示原样输出
Bean中设置@Alias时,setOnlyAlias是无效的,这个参数只和addHeaderAlias配合使用,原因是注解是Bean内部的操作,而addHeaderAlias是Writer的操作,不互通。
|
ExcelWriter |
setRowHeight(int rownum,
int height)
设置行高,值为一个点的高度
|
ExcelWriter |
setRowStyle(int y,
org.apache.poi.ss.usermodel.CellStyle style)
设置行样式
|
ExcelWriter |
setRowStyleIfHasData(int y,
org.apache.poi.ss.usermodel.CellStyle style)
对数据行整行加自定义样式 仅对数据单元格设置 write后调用
setRowStyle(int, org.apache.poi.ss.usermodel.CellStyle)
这个方法加的样式会使整行没有数据的单元格也有样式
特别是加背景色时很不美观 且有数据的单元格样式会被StyleSet中的样式覆盖掉 |
ExcelWriter |
setSheet(int sheetIndex)
自定义需要读取或写出的Sheet,如果给定的sheet不存在,创建之(命名为默认)
在读取中,此方法用于切换读取的sheet,在写出时,此方法用于新建或者切换sheet |
ExcelWriter |
setSheet(String sheetName)
自定义需要读取或写出的Sheet,如果给定的sheet不存在,创建之。
|
ExcelWriter |
setStyle(org.apache.poi.ss.usermodel.CellStyle style,
int x,
int y)
|
ExcelWriter |
setStyle(org.apache.poi.ss.usermodel.CellStyle style,
String locationRef)
|
ExcelWriter |
setStyleSet(StyleSet styleSet)
设置样式集,如果不使用样式,传入
null |
ExcelWriter |
write(Iterable<?> data)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式默认的,当当前行号为0时,写出标题(如果为Map或Bean),否则不写标题 data中元素支持的类型有: 1. |
ExcelWriter |
write(Iterable<?> data,
boolean isWriteKeyAsHead)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式
data中元素支持的类型有:
1. |
ExcelWriter |
write(Iterable<?> data,
Comparator<String> comparator)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动增加样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式data中元素支持的类型有: 1. |
ExcelWriter |
writeCellValue(int x,
int y,
Object value)
给指定单元格赋值,使用默认单元格样式,默认不是Header
|
ExcelWriter |
writeCellValue(int x,
int y,
Object value,
boolean isHeader)
给指定单元格赋值,使用默认单元格样式
|
ExcelWriter |
writeCellValue(String locationRef,
Object value)
给指定单元格赋值,使用默认单元格样式,默认不是Header
|
ExcelWriter |
writeCellValue(String locationRef,
Object value,
boolean isHeader)
给指定单元格赋值,使用默认单元格样式
|
ExcelWriter |
writeCol(Map<?,? extends Iterable<?>> colMap,
boolean isWriteKeyAsHead)
从第1列开始按列写入数据(index 从0开始)
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
writeCol(Map<?,? extends Iterable<?>> colMap,
int startColIndex,
boolean isWriteKeyAsHead)
从指定列开始按列写入数据(index 从0开始)
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
writeCol(Object headerVal,
int colIndex,
Iterable<?> colData,
boolean isResetRowIndex)
为第指定列写入数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
writeCol(Object headerVal,
Iterable<?> colData,
boolean isResetRowIndex)
为第一列写入数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
writeHeadRow(Iterable<?> rowData)
写出一行标题数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式 |
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 |
writeImg(File imgFile,
int col1,
int row1,
int col2,
int row2)
写出数据,本方法只是将数据写入Workbook中的Sheet,并不写出到文件
添加图片到当前sheet中 / 默认图片类型png / 默认的起始坐标和结束坐标都为0 |
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 |
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 |
writeRow(Iterable<?> rowData)
写出一行数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认样式,可使用 getCellStyle() 方法调用后自定义默认样式 |
ExcelWriter |
writeRow(Map<?,?> rowMap,
boolean isWriteKeyAsHead)
将一个Map写入到Excel,isWriteKeyAsHead为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行values
如果rowMap为空(包括null),则写出空行 |
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 |
writeSecHeadRow(Iterable<?> rowData)
写出复杂标题的第二行标题数据
本方法只是将数据写入Workbook中的Sheet,并不写出到文件 写出的起始行为当前行号,可使用 getCurrentRow() 方法调用,根据写出的的行数,当前行号自动+1样式为默认标题样式,可使用 getHeadCellStyle() 方法调用后自定义默认样式
此方法的逻辑是:将一行数据写出到当前行,遇到已存在的单元格跳过,不存在的创建并赋值。 |
cloneSheet, createCellStyle, createCellStyle, createCellStyle, createColumnStyle, createHyperlink, createHyperlink, createRowStyle, getCell, getCell, getCell, getCell, getColumnCount, getColumnCount, getHeaderAlias, getOrCreateCell, getOrCreateCell, getOrCreateCellStyle, getOrCreateCellStyle, getOrCreateColumnStyle, getOrCreateRow, getOrCreateRowStyle, getPhysicalRowCount, getRowCount, getSheet, getSheetCount, getSheetNames, getSheets, getWorkbook, isXlsx, removeHeaderAlias, setSheet
public ExcelWriter()
flush(OutputStream)
方法写出到流setDestFile(File)
方法自定义写出的文件,然后调用flush()
方法写出到文件public ExcelWriter(boolean isXlsx)
isXlsx
- 是否为xlsx格式public ExcelWriter(String destFilePath)
destFilePath
- 目标文件路径,可以不存在public ExcelWriter(boolean isXlsx, String sheetName)
isXlsx
- 是否为xlsx格式sheetName
- sheet名,第一个sheet名并写出到此sheet,例如sheet1public ExcelWriter(String destFilePath, String sheetName)
destFilePath
- 目标文件路径,可以不存在sheetName
- sheet名,第一个sheet名并写出到此sheet,例如sheet1public ExcelWriter(File destFile)
destFile
- 目标文件,可以不存在public ExcelWriter(File destFile, String sheetName)
destFile
- 目标文件,可以不存在sheetName
- sheet名,做为第一个sheet名并写出到此sheet,例如sheet1public ExcelWriter(org.apache.poi.ss.usermodel.Workbook workbook, String sheetName)
flush(OutputStream)
方法写出到流setDestFile(File)
方法自定义写出的文件,然后调用flush()
方法写出到文件workbook
- Workbook
sheetName
- sheet名,做为第一个sheet名并写出到此sheet,例如sheet1public ExcelWriter(org.apache.poi.ss.usermodel.Sheet sheet)
flush(OutputStream)
方法写出到流setDestFile(File)
方法自定义写出的文件,然后调用flush()
方法写出到文件sheet
- Sheet
public ExcelWriter setSheet(int sheetIndex)
ExcelBase
setSheet
in class ExcelBase<ExcelWriter>
sheetIndex
- sheet序号,从0开始计数public ExcelWriter setSheet(String sheetName)
ExcelBase
setSheet
in class ExcelBase<ExcelWriter>
sheetName
- sheet名public ExcelWriter reset()
1. 当前行游标归零 2. 清空别名比较器 3. 清除标题缓存
public ExcelWriter renameSheet(String sheetName)
renameSheet
in class ExcelBase<ExcelWriter>
sheetName
- 新的sheet名Workbook.setSheetName(int, String)
public ExcelWriter renameSheet(int sheet, String sheetName)
sheet
- sheet序号,0表示第一个sheetsheetName
- 新的sheet名public ExcelWriter autoSizeColumnAll()
public ExcelWriter autoSizeColumnAll(float widthRatio)
widthRatio
- 列宽的倍数。如果所有内容都是英文,可以设为1,如果有中文,建议设置为 1.6-2.0之间。public ExcelWriter autoSizeColumn(int columnIndex)
columnIndex
- 第几列,从0计数public ExcelWriter autoSizeColumn(int columnIndex, boolean useMergedCells)
columnIndex
- 第几列,从0计数useMergedCells
- 是否适用于合并单元格public ExcelWriter autoSizeColumn(int columnIndex, float widthRatio)
columnIndex
- 第几列,从0计数widthRatio
- 列宽的倍数。如果所有内容都是英文,可以设为1,如果有中文,建议设置为 1.6-2.0之间。public ExcelWriter autoSizeColumn(int columnIndex, boolean useMergedCells, float widthRatio)
columnIndex
- 第几列,从0计数useMergedCells
- 是否适用于合并单元格widthRatio
- 列宽的倍数。如果所有内容都是英文,可以设为1,如果有中文,建议设置为 1.6-2.0之间。public ExcelWriter disableDefaultStyle()
setStyleSet(StyleSet)
public ExcelWriter setStyleSet(StyleSet styleSet)
null
styleSet
- 样式集,null
表示无样式public StyleSet getStyleSet()
1. 头部样式 2. 一般单元格样式 3. 默认数字样式 4. 默认日期样式
public org.apache.poi.ss.usermodel.CellStyle getHeadCellStyle()
public org.apache.poi.ss.usermodel.CellStyle getCellStyle()
public int getCurrentRow()
public String getDisposition(String fileName, Charset charset)
response.setHeader("Content-Disposition", excelWriter.getDisposition("test.xlsx", CharsetUtil.CHARSET_UTF_8));
fileName
- 文件名,如果文件名没有扩展名,会自动按照生成Excel类型补齐扩展名,如果提供空,使用随机UUIDcharset
- 编码,null则使用默认UTF-8编码public String getContentType()
response.setContentType(excelWriter.getContentType());
public ExcelWriter setCurrentRow(int rowIndex)
rowIndex
- 行号public ExcelWriter setCurrentRowToEnd()
public ExcelWriter passCurrentRow()
public ExcelWriter passRows(int rows)
rows
- 跳过的行数public ExcelWriter resetRow()
public ExcelWriter setDestFile(File destFile)
destFile
- 目标文件public ExcelWriter setHeaderAlias(Map<String,String> headerAlias)
ExcelBase
setHeaderAlias
in class ExcelBase<ExcelWriter>
headerAlias
- 别名Mappublic ExcelWriter clearHeaderAlias()
ExcelBase
clearHeaderAlias
in class ExcelBase<ExcelWriter>
public ExcelWriter addHeaderAlias(String name, String alias)
ExcelBase
addHeaderAlias
in class ExcelBase<ExcelWriter>
name
- 标题alias
- 别名public ExcelWriter setOnlyAlias(boolean isOnlyAlias)
isOnlyAlias
- 是否只保留别名中的字段值public ExcelWriter setFreezePane(int rowSplit)
rowSplit
- 冻结的行及行数,2表示前两行public ExcelWriter setFreezePane(int colSplit, int rowSplit)
colSplit
- 冻结的列及列数,2表示前两列rowSplit
- 冻结的行及行数,2表示前两行public ExcelWriter setColumnWidth(int columnIndex, int width)
columnIndex
- 列号(从0开始计数,-1表示所有列的默认宽度)width
- 宽度(单位1~255个字符宽度)public ExcelWriter setDefaultRowHeight(int height)
height
- 高度public ExcelWriter setRowHeight(int rownum, int height)
rownum
- 行号(从0开始计数,-1表示所有行的默认高度)height
- 高度public ExcelWriter setHeaderOrFooter(String text, Align align, boolean isFooter)
text
- 页脚的文本align
- 对齐方式枚举 Align
isFooter
- 是否为页脚,false表示页眉,true表示页脚public ExcelWriter addIgnoredErrors(org.apache.poi.ss.util.CellRangeAddress cellRangeAddress, org.apache.poi.ss.usermodel.IgnoredErrorType... ignoredErrorTypes) throws UnsupportedOperationException
cellRangeAddress
- 指定单元格范围ignoredErrorTypes
- 忽略的错误类型列表UnsupportedOperationException
- 如果sheet不是XSSFSheetpublic ExcelWriter addSelect(int x, int y, String... selectList)
x
- x坐标,列号,从0开始y
- y坐标,行号,从0开始selectList
- 下拉列表public ExcelWriter addSelect(org.apache.poi.ss.util.CellRangeAddressList regions, String... selectList)
regions
- CellRangeAddressList
指定下拉列表所占的单元格范围selectList
- 下拉列表内容public ExcelWriter addValidationData(org.apache.poi.ss.usermodel.DataValidation dataValidation)
dataValidation
- DataValidation
public ExcelWriter merge(int lastColumn)
getHeadCellStyle()
方法调用后自定义默认样式lastColumn
- 合并到的最后一个列号public ExcelWriter merge(int lastColumn, Object content)
lastColumn
- 合并到的最后一个列号content
- 合并单元格后的内容public ExcelWriter merge(int lastColumn, Object content, boolean isSetHeaderStyle)
lastColumn
- 合并到的最后一个列号content
- 合并单元格后的内容isSetHeaderStyle
- 是否为合并后的单元格设置默认标题样式,只提取边框样式public ExcelWriter merge(int firstRow, int lastRow, int firstColumn, int lastColumn, Object content, boolean isSetHeaderStyle)
getHeadCellStyle()
方法调用后自定义默认样式firstRow
- 起始行,0开始lastRow
- 结束行,0开始firstColumn
- 起始列,0开始lastColumn
- 结束列,0开始content
- 合并单元格后的内容isSetHeaderStyle
- 是否为合并后的单元格设置默认标题样式,只提取边框样式public ExcelWriter merge(int firstRow, int lastRow, int firstColumn, int lastColumn, Object content, org.apache.poi.ss.usermodel.CellStyle cellStyle)
firstRow
- 起始行,0开始lastRow
- 结束行,0开始firstColumn
- 起始列,0开始lastColumn
- 结束列,0开始content
- 合并单元格后的内容cellStyle
- 合并后单元格使用的样式,可以为nullpublic ExcelWriter write(Iterable<?> data)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动增加getCellStyle()
方法调用后自定义默认样式data中元素支持的类型有:
1. Iterable,即元素为一个集合,元素被当作一行,data表示多行
2. Map,即元素为一个Map,第一个Map的keys作为首行,剩下的行为Map的values,data表示多行
3. Bean,即元素为一个Bean,第一个Bean的字段名列表会作为首行,剩下的行为Bean的字段值列表,data表示多行
4. 其它类型,按照基本类型输出(例如字符串)
data
- 数据public ExcelWriter write(Iterable<?> data, boolean isWriteKeyAsHead)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动增加getCellStyle()
方法调用后自定义默认样式
data中元素支持的类型有:
1. Iterable,即元素为一个集合,元素被当作一行,data表示多行
2. Map,即元素为一个Map,第一个Map的keys作为首行,剩下的行为Map的values,data表示多行
3. Bean,即元素为一个Bean,第一个Bean的字段名列表会作为首行,剩下的行为Bean的字段值列表,data表示多行
4. 其它类型,按照基本类型输出(例如字符串)
data
- 数据isWriteKeyAsHead
- 是否强制写出标题行(Map或Bean)public ExcelWriter write(Iterable<?> data, Comparator<String> comparator)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动增加getCellStyle()
方法调用后自定义默认样式
1. Map,即元素为一个Map,第一个Map的keys作为首行,剩下的行为Map的values,data表示多行
2. Bean,即元素为一个Bean,第一个Bean的字段名列表会作为首行,剩下的行为Bean的字段值列表,data表示多行
data
- 数据comparator
- 比较器,用于字段名的排序public ExcelWriter writeImg(File imgFile, int col1, int row1, int col2, int row2)
imgFile
- 图片文件col1
- 指定起始的列,下标从0开始row1
- 指定起始的行,下标从0开始col2
- 指定结束的列,下标从0开始row2
- 指定结束的行,下标从0开始public ExcelWriter writeImg(File imgFile, int dx1, int dy1, int dx2, int dy2, int col1, int row1, int col2, int row2)
imgFile
- 图片文件dx1
- 起始单元格中的x坐标dy1
- 起始单元格中的y坐标dx2
- 结束单元格中的x坐标dy2
- 结束单元格中的y坐标col1
- 指定起始的列,下标从0开始row1
- 指定起始的行,下标从0开始col2
- 指定结束的列,下标从0开始row2
- 指定结束的行,下标从0开始public ExcelWriter writeImg(File imgFile, int imgType, int dx1, int dy1, int dx2, int dy2, int col1, int row1, int col2, int row2)
imgFile
- 图片文件imgType
- 图片类型,对应poi中Workbook类中的图片类型2-7变量dx1
- 起始单元格中的x坐标dy1
- 起始单元格中的y坐标dx2
- 结束单元格中的x坐标dy2
- 结束单元格中的y坐标col1
- 指定起始的列,下标从0开始row1
- 指定起始的行,下标从0开始col2
- 指定结束的列,下标从0开始row2
- 指定结束的行,下标从0开始public ExcelWriter writeImg(byte[] pictureData, int imgType, int dx1, int dy1, int dx2, int dy2, int col1, int row1, int col2, int row2)
pictureData
- 数据bytesimgType
- 图片类型,对应poi中Workbook类中的图片类型2-7变量dx1
- 起始单元格中的x坐标dy1
- 起始单元格中的y坐标dx2
- 结束单元格中的x坐标dy2
- 结束单元格中的y坐标col1
- 指定起始的列,下标从0开始row1
- 指定起始的行,下标从0开始col2
- 指定结束的列,下标从0开始row2
- 指定结束的行,下标从0开始public ExcelWriter writeHeadRow(Iterable<?> rowData)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动+1getHeadCellStyle()
方法调用后自定义默认样式rowData
- 一行的数据public ExcelWriter writeSecHeadRow(Iterable<?> rowData)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动+1getHeadCellStyle()
方法调用后自定义默认样式
此方法的逻辑是:将一行数据写出到当前行,遇到已存在的单元格跳过,不存在的创建并赋值。
rowData
- 一行的数据public ExcelWriter writeRow(Object rowBean, boolean isWriteKeyAsHead)
1、如果为Iterable,直接写出一行 2、如果为Map,isWriteKeyAsHead为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行values 3、如果为Bean,转为Map写出,isWriteKeyAsHead为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行values
rowBean
- 写出的BeanisWriteKeyAsHead
- 为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行valueswriteRow(Iterable)
,
writeRow(Map, boolean)
public ExcelWriter writeRow(Map<?,?> rowMap, boolean isWriteKeyAsHead)
rowMap
- 写出的Map,为空(包括null),则写出空行isWriteKeyAsHead
- 为true写出两行,Map的keys做为一行,values做为第二行,否则只写出一行valuespublic ExcelWriter writeRow(Iterable<?> rowData)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动+1getCellStyle()
方法调用后自定义默认样式rowData
- 一行的数据public ExcelWriter writeCol(Map<?,? extends Iterable<?>> colMap, boolean isWriteKeyAsHead)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动+1getCellStyle()
方法调用后自定义默认样式colMap
- 一列的数据isWriteKeyAsHead
- 是否将Map的Key作为表头输出,如果为True第一行为表头,紧接着为valuespublic ExcelWriter writeCol(Map<?,? extends Iterable<?>> colMap, int startColIndex, boolean isWriteKeyAsHead)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动+1getCellStyle()
方法调用后自定义默认样式colMap
- 一列的数据startColIndex
- 起始的列号,从0开始isWriteKeyAsHead
- 是否将Map的Key作为表头输出,如果为True第一行为表头,紧接着为valuespublic ExcelWriter writeCol(Object headerVal, Iterable<?> colData, boolean isResetRowIndex)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动+1getCellStyle()
方法调用后自定义默认样式headerVal
- 表头名称,如果为null则不写入colData
- 需要写入的列数据isResetRowIndex
- 如果为true,写入完毕后Row index 将会重置为写入之前的未知,如果为false,写入完毕后Row index将会在写完的数据下方public ExcelWriter writeCol(Object headerVal, int colIndex, Iterable<?> colData, boolean isResetRowIndex)
getCurrentRow()
方法调用,根据写出的的行数,当前行号自动+1getCellStyle()
方法调用后自定义默认样式headerVal
- 表头名称,如果为null则不写入colIndex
- 列indexcolData
- 需要写入的列数据isResetRowIndex
- 如果为true,写入完毕后Row index 将会重置为写入之前的未知,如果为false,写入完毕后Row index将会在写完的数据下方public ExcelWriter writeCellValue(String locationRef, Object value)
locationRef
- 单元格地址标识符,例如A11,B5value
- 值public ExcelWriter writeCellValue(String locationRef, Object value, boolean isHeader)
locationRef
- 单元格地址标识符,例如A11,B5value
- 值isHeader
- 是否为Headerpublic ExcelWriter writeCellValue(int x, int y, Object value)
x
- X坐标,从0计数,即列号y
- Y坐标,从0计数,即行号value
- 值public ExcelWriter writeCellValue(int x, int y, Object value, boolean isHeader)
x
- X坐标,从0计数,即列号y
- Y坐标,从0计数,即行号isHeader
- 是否为Headervalue
- 值public ExcelWriter setStyle(org.apache.poi.ss.usermodel.CellStyle style, String locationRef)
ExcelBase.getOrCreateCellStyle(int, int)
方法创建或取得一个样式对象。
需要注意的是,共享样式会共享同一个CellStyle
,一个单元格样式改变,全部改变。
style
- 单元格样式locationRef
- 单元格地址标识符,例如A11,B5public ExcelWriter setStyle(org.apache.poi.ss.usermodel.CellStyle style, int x, int y)
ExcelBase.getOrCreateCellStyle(int, int)
方法创建或取得一个样式对象。
需要注意的是,共享样式会共享同一个CellStyle
,一个单元格样式改变,全部改变。
style
- 单元格样式x
- X坐标,从0计数,即列号y
- Y坐标,从0计数,即行号public ExcelWriter setRowStyle(int y, org.apache.poi.ss.usermodel.CellStyle style)
y
- Y坐标,从0计数,即行号style
- 样式Row.setRowStyle(CellStyle)
public ExcelWriter setRowStyleIfHasData(int y, org.apache.poi.ss.usermodel.CellStyle style)
setRowStyle(int, org.apache.poi.ss.usermodel.CellStyle)
这个方法加的样式会使整行没有数据的单元格也有样式
特别是加背景色时很不美观 且有数据的单元格样式会被StyleSet中的样式覆盖掉
y
- 行坐标style
- 自定义的样式public ExcelWriter setColumnStyle(int x, org.apache.poi.ss.usermodel.CellStyle style)
x
- 列号,从0开始style
- 样式public ExcelWriter setColumnStyleIfHasData(int x, int y, org.apache.poi.ss.usermodel.CellStyle style)
setColumnStyle(int, org.apache.poi.ss.usermodel.CellStyle)
这个方法加的样式会使整列没有数据的单元格也有样式
特别是加背景色时很不美观 且有数据的单元格样式会被StyleSet中的样式覆盖掉
x
- 列的索引y
- 起始行style
- 样式public org.apache.poi.ss.usermodel.Font createFont()
public ExcelWriter flush() throws IORuntimeException
NullPointerException
setDestFile(File)
方法预定义,或者通过构造定义IORuntimeException
- IO异常public ExcelWriter flush(File destFile) throws IORuntimeException
NullPointerException
destFile
- 写出到的文件IORuntimeException
- IO异常public ExcelWriter flush(OutputStream out) throws IORuntimeException
out
- 输出流IORuntimeException
- IO异常public ExcelWriter flush(OutputStream out, boolean isCloseOut) throws IORuntimeException
out
- 输出流isCloseOut
- 是否关闭输出流IORuntimeException
- IO异常public void close()
close
in interface Closeable
close
in interface AutoCloseable
close
in class ExcelBase<ExcelWriter>
protected void closeWithoutFlush()
Copyright © 2024. All rights reserved.