POI3.16导出Excel使用

创建Excel文档工作簿:

xlsx版本

// 支持数据量可超过100万行
XSSFWorkbook workBook = new XSSFWorkbook();

xls版本

// 由于版本问题,行数不能超过65536
HSSFWorkbook workBook = new HSSFWorkbook();

下文的单元格相关的代码均以xlsx版本为例,如需以xls版本导出 一般将前缀为XSSF的改为HSSF即可生成文件,需要注意的是,工作簿的write方法和close方法需要在最后(创建行,单元格等)使用,否则可能出现生成的Excel文件损坏问题

FileOutputStream output=new FileOutputStream("/cluster/excel/helloWorld.xlsx");
workBook.write(output);
output.flush();
workBook.close();

// 建立新的sheet对象(excel的表单)
XSSFSheet sheet = workBook.createSheet("sheet1");

// 设置行高
XSSFRow row = sheet.createRow(3);
// 生成后的行高大概为57,0.75为转换率
row.setHeightInPoints((float) (57 * 0.75));

// 设置列宽,生成后的列宽大概为12,256为转换率
sheet.setColumnWidth(0, 12*256);
// 设置自适应列宽(中文自适应不准确)
sheet.autoSizeColumn(0);

单元格:

创建单元格:

// 0为第一列,1为第二列,以此类推
XSSFCell cell = row.createCell(0);
// 设置值
cell.setCellValue("Hello World!");

样式:

// 水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
// 垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// 字体
XSSFFont font = workBook.createFont();
// 加粗
font.setBold(true);
// 斜体
font.setItalic(true);
// 字体样式
font.setFontName("宋体");
// 文字大小
font.setFontHeightInPoints((short)18);
// 单元格样式
XSSFCellStyle cellStyle = workBook.createCellStyle();
// 自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
cellStyle.setFont(font);
// 将以上编辑的样式设置到单元格中
cell.setCellStyle(cellStyle);

特殊样式:

// 如果需要在一个单元格中换行(需设置自动换行)或者设置多种不同样式则需要使用到富文本
XSSFRichTextString richTextStr = new XSSFRichTextString("行1\r\n行2\r\n行3");
// 将值设置到单元格中
cell.setCellValue(richTextStr);

合并单元格:

// 需要传入CellRangeAddress类型的变量
int org.apache.poi.xssf.usermodel.XSSFSheet.addMergedRegion(CellRangeAddress region)
// CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
org.apache.poi.ss.util.CellRangeAddress.CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
// 示例:合并第一列到第12列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 12));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值