POI眼中的xls文件结构
| - workbook
| ---- sheet | ------- row | ---------- cellworkbook就相当于xls文件(在excel中称之为工作簿),一个workbook(工作簿)里可以有多个sheet(工作表),每个工作表里又分为多个row(行),而每个行中又有很多cell(单元格)。
创建一个xls文件的一般步骤
public class Demo { public static void main(String[] args) { // 1. 创建workbook HSSFWorkbook workbook = new HSSFWorkbook(); // 2. 创建工作表 HSSFSheet sheet = workbook.createSheet("我是第一个工作表"); // 3. 创建行 HSSFRow row = sheet.createRow(0); // 4. 创建单元格 HSSFCell cell = row.createCell(0); // 5. 为单元格设置内容 cell.setCellValue("这是A1单元格"); // 6. 所有内容设置完毕,导出xls文件 try { FileOutputStream fileOutputStream = new FileOutputStream("F:/demo.xls"); workbook.write(fileOutputStream); fileOutputStream.flush(); fileOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
更多的可能性
为单元格设置样式(边框,字体,对齐,颜色,自动换行等)
HSSFCellStyle cellStyle = workbook.createCellStyle(); // 设置上下左右边框 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 设置字体 HSSFFont cellFont = workbook.createFont(); cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 加粗 cellFont.setFontName("微软雅黑"); // 字体 cellFont.setFontHeightInPoints(((short) 12)); // 字号 cellFont.setColor(HSSFColor.BLUE.index); // 颜色 // 将字体绑定到样式中 cellStyle.setFont(cellFont); // 设置对齐方式 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 设置单元格颜色 cellStyle.setFillForegroundColor(HSSFColor.RED.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); // 设置自动换行 cellStyle.setWrapText(true); // 为单元格设置样式 cell.setCellStyle(cellStyle);
颜色样式具体参见:
特别注意:如文章中的颜色为HSSFColor.RED
,参数需要传入HSSFColor.RED.index
为xls文件设置列宽和行高
// 设置列宽 sheet.setColumnWidth(0, 20 * 256); // 设置行高 row.setHeightInPoints(92f);
其中行高可以使用上面的函数,参数为像素值。
但列宽没有提供设置像素值的参数,该函数的第一个参数表示列号(从0开始),第二个参数的单位是1/256个字符宽度,如上面代码,则列宽为20个字符的宽度。
合并单元格
CellRangeAddress cra = new CellRangeAddress(1, 3, 1, 6); sheet.addMergedRegion(cra);
其中第一个参数表示开始行,第二个参数表示结束行,第三个参数表示开始列,第四个参数表示结束列
设置超链接
工作簿内的超链接
// 添加超链接 HSSFHyperlink hyperlink = new HSSFHyperlink(Hyperlink.LINK_DOCUMENT); hyperlink.setAddress("#" + "我是第一个工作表" + "!B1"); // # 后跟 表名, ! 后跟 单元格位置 cell.setHyperlink(hyperlink); // 设置超链接样式 HSSFCellStyle hyperStyle = sheet.getWorkbook().createCellStyle(); HSSFFont hyperFont = workbook.createFont(); hyperFont.setUnderline((byte) 1); hyperFont.setColor(HSSFColor.BLUE.index); hyperFont.setFontName("微软雅黑"); hyperFont.setFontHeightInPoints(((short) 12)); hyperStyle.setFont(hyperFont); cell.setCellStyle(hyperStyle);
url超链接
// 代码片段,全部请仿照 工作簿内的超链接 代码 HSSFHyperlink hyperlink = new HSSFHyperlink(Hyperlink.LINK_URL); hyperlink.setAddress("http://www.baidu.com"); // url
其他
还支持email和文件,这里就不介绍了。
以上是本次使用时的总结,POI非常强大,由于水平有限只能总结这些,但足够平常使用参考。