Apache POI 第三讲之对Excel单元格的操作

时间:2021-02-04 20:26:24

有时候我们在做项目时,有些项目需要生成Microsoft Excel文件格式的报告。有时,甚至希望将Excel文件作为输入数据。这是我们需要用到Apache POI 。例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Excel。

单元格对齐方式

1.编写主方法

public class Demo8 {
public static void main(String[] args) throws Exception {

// 定义一个新的工作簿
Workbook wb = new HSSFWorkbook() ;
// 创建第一个Sheet页
Sheet sheet = wb.createSheet("第一个Sheet页");
// 创建一个行
Row row = sheet.createRow(2) ;

row.setHeightInPoints(30);

// 效果:位于底部,水平居中
createCell(wb, row, (short)0, HSSFCellStyle.ALIGN_CENTER, HSSFCellStyle.VERTICAL_BOTTOM) ;

// 定义一个输出流,并指定输出路径
FileOutputStream fileOut = new FileOutputStream("./excel/excel05.xls") ;
// 生成excel 文件
wb.write(fileOut) ;
fileOut.close() ;

}

/**
* 创建一个单元格并为其设定指定的对齐方式
* @param wb
* @param row
* @param column
* @param halign
* @param valign
*/

private static void createCell(Workbook wb, Row row, short column, short halign, short valign) {
Cell cell = row.createCell(column) ;
cell.setCellValue(new HSSFRichTextString("Align It"));
CellStyle cellStyle = wb.createCellStyle() ;
// 设置单元格水平方向对其方式
cellStyle.setAlignment(halign) ;
// 设置单元格垂直方向对其方式
cellStyle.setVerticalAlignment(valign) ;
// 设置单元格样式
cell.setCellStyle(cellStyle) ;
}
}

2.查看效果
效果:位于底部,水平居中

Apache POI 第三讲之对Excel单元格的操作

单元格边框处理

public class Demo9 {
public static void main(String[] args) throws Exception {

    // 定义一个新的工作簿
Workbook wb = new HSSFWorkbook() ;
// 创建第一个Sheet页
Sheet sheet = wb.createSheet("第一个Sheet页");
// 创建一个行
Row row = sheet.createRow(1) ;

Cell cell = row.createCell(1) ;
cell.setCellValue("哈哈哈哈哈哈哈") ;
row.setHeightInPoints(30);

CellStyle cellStyle = wb.createCellStyle() ;
// 设置底部边框:窄边框
cellStyle.setBorderBottom(BorderStyle.THIN) ;
// 设置底部颜色
cellStyle.setBottomBorderColor(IndexedColors.GREEN.getIndex());
// 设置左边框:点边框
cellStyle.setBorderLeft(BorderStyle.DOTTED) ;
// 设置左边框颜色
cellStyle.setLeftBorderColor(IndexedColors.RED.getIndex());
// 设置右边框:中等边界
cellStyle.setBorderRight(BorderStyle.MEDIUM) ;
// 设置右边框
cellStyle.setRightBorderColor(IndexedColors.BLUE.getIndex());

cell.setCellStyle(cellStyle) ;

// 定义一个输出流,并指定输出路径
FileOutputStream fileOut = new FileOutputStream("./excel/excel06.xls") ;
// 生成excel 文件
wb.write(fileOut) ;
fileOut.close() ;

}

}

2.查看效果

Apache POI 第三讲之对Excel单元格的操作

单元格填充和颜色操作

1.编写主方法
public class Demo10 {
public static void main(String[] args) throws Exception {

    // 定义一个新的工作簿
Workbook wb = new HSSFWorkbook() ;
// 创建第一个Sheet页
Sheet sheet = wb.createSheet("第一个Sheet页");
// 创建一个行
Row row = sheet.createRow(1) ;

Cell cell = row.createCell(1) ;
cell.setCellValue("哈哈哈哈哈哈哈") ;
row.setHeightInPoints(30);

CellStyle cellStyle = wb.createCellStyle() ;
// 设置背景色
cellStyle.setFillBackgroundColor(IndexedColors.AQUA.getIndex()) ;
cellStyle.setFillPattern(CellStyle.BIG_SPOTS) ;
cell.setCellStyle(cellStyle) ;

Cell cell2 = row.createCell(3) ;
cell2.setCellValue("哦哦哦哦哦") ;
row.setHeightInPoints(30);

CellStyle cellStyle2 = wb.createCellStyle() ;
// 设置前景色
cellStyle2.setFillBackgroundColor(IndexedColors.RED.getIndex()) ;
cellStyle2.setFillPattern(CellStyle.THICK_VERT_BANDS) ;
cell2.setCellStyle(cellStyle2) ;

// 定义一个输出流,并指定输出路径
FileOutputStream fileOut = new FileOutputStream("./excel/excel07.xls") ;
// 生成excel 文件
wb.write(fileOut) ;
fileOut.close() ;

}

}

2.查看效果

Apache POI 第三讲之对Excel单元格的操作

单元格合并

1.编写主方法

public class Demo11 {
public static void main(String[] args) throws Exception {

    // 定义一个新的工作簿
Workbook wb = new HSSFWorkbook() ;
// 创建第一个Sheet页
Sheet sheet = wb.createSheet("第一个Sheet页");
// 创建一个行
Row row = sheet.createRow(1) ;

Cell cell = row.createCell(1) ;
cell.setCellValue("哈哈哈哈哈哈哈") ;
row.setHeightInPoints(30);

// 合并单元格
sheet.addMergedRegion(new CellRangeAddress(
1, // 起始行
2, // 结束行
1, // 起始行
2 // 结束行
)) ;

// 定义一个输出流,并指定输出路径
FileOutputStream fileOut = new FileOutputStream("./excel/excel08.xls") ;
// 生成excel 文件
wb.write(fileOut) ;
fileOut.close() ;

}

}

2.查看效果

Apache POI 第三讲之对Excel单元格的操作

有些方法不同是因为poi架包版本不同,具体请查看api文档。
本博主用的是:poi-3.15-beta2.jar