poi常用方法
最近由于工作原因,需要将生成excel表格的策略封装成基类,因此将个人认为常用到的方法总结一下,顺便加深记忆
- workbook与sheet的关系
workbook是工作薄,而sheet是工作表。一个工作薄可以包含一个或多个工作表。我们常见的excel文件就是一个工作薄,里面可以创建多个工作表
- 常用方法
createSheet(String sheetname):创建指定名称的工作表
WorkBook workbook = new XSSFWorkbook();//创建xlsx工作薄
Sheet sheet=workbook.createSheet(sheetName);//创建指定名称的工作表
createRow(int rownum):创建一行
createCell(int column):创建一个单元格
合并单元格:
Sheet.addMergedRegion(CellRangeAddress region)
region对象可以指定合并单元格的具体信息,如
CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
getPhysicalNumberOfRows()获取的是物理行数,也就是不包括那些空行(隔行)的情况。
getLastRowNum()获取的是最后一行的编号(编号从0开始)比行数少1 可用于获取总行数 遍历数据时常用这个方法
Row.getPhysicalNumberOfCells() 获取不为空的列个数
Row.getLastCellNum() 获取列数 比列下标大1 遍历数据时常用这个方法
CellStyle:单元格样式 字体、背景颜色、边框等均是在这样对象基础上设置的,举例展示
Font font = this.workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD); //设置字体粗细
font.setFontHeightInPoints((short) 14); //设置字体大小
font.setFontName("Times New Roman"); //设置字体
CellStyle cellStyle = this.workbook.createCellStyle();
cellStyle.setFont(font); //设置字体
cellStyle.setAlignment(CellStyle.ALIGN_CENTER); //设置对其方式-水平
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //设置垂直对其方式-垂直居中
//设置背景颜色
cellStyle.setFillForegroundColor(HSSFColorPredefined.BLUE.getIndex());//设置前景色
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); //设置填充方式
WorkBook.write(OutputStream out) //将工作薄写入到硬盘等
遇到的问题:Cannot get a STRING value from a NUMERIC cell
解决方法:cell.setCellType(CellType.STRING); //将单元格类型设置为字符串即可
以上是写excel常用的方法,关于excel的读操作其实是这些方法的逆操作,这里不再赘述,也可使用时自行查找api
若上述有解释错误之处,请指出,谢谢!