Apache POI 简介
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
Apache POI(HSSF+ XSSF),支持Excel库的所有基本功能。
HSSFWorkbook 和 XSSFWorkbook
工作簿的高级表示形式。这是大多数用户正在阅读或编写工作簿时构造的第一个对象。它也是用于创建新工作表等的顶层对象。在 org.apache.poi.ss.usermodel 包中。
HSSFWorkbook:用于操作扩展名为.xls的Excel,它与微软的Excel97-2003版本兼容。
XSSFWorkbook:用于操作扩展名为.xlsx的Excel,它与Excel2007版本及更高版本兼容。
具体使用
1. 写操作(创建Excel)
1.1 HSSFWorkbook对象
SSFWorkbook workbook = new HSSFWorkbook(); // 创建工作簿对象
1.2 sheet对象
// workbook对象需要在此之前创建
HSSFSheet sheet = workbook.createSheet(); // 创建sheet对象(sheet使用默认名称)
或者
HSSFSheet sheet = workbook.createSheet("Sheet name"); // 创建sheet对象(使用指定的sheet名称)
1.3 row对象
// sheet对象需要在此之前创建
HSSFRow row = sheet.createRow(N); // 创建第N行(N为常量)
row.setHeightInPoints((short) 24); // 设置行高
1.4 cell对象
// row对象需要在此之前创建
HSSFCell cell = row.createCell(N); // 创建第N个单元格(N为常量)
cell.setCellValue("String Value"); // 设置单元格的值
// cellStyle对象需要在此之前创建
cell.setCellStyle(cellStyle);
1.5 font对象
// workbook对象需要在此之前创建
HSSFFont font = workbook.createFont(); // 创建字体对象
font.setFontName("宋体"); // 设置字体
font.setBold(true); // 设置字体是否加粗
font.setColor(Font.COLOR_RED); // 设置字体颜色
font.setFontHeightInPoints((short) 14); // 设置字体高度
1.6 cellStyle对象
HSSFCellStyle cellStyle = workbook.createCellStyle(); // 创建单元格样式 —— workbook对象需要在此之前创建
cellStyle.setAlignment(HorizontalAlignment.CENTER); // 设置水平方向上的文本对齐方式
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 设置竖直方向上的文本对齐方式
cellStyle.setBorderTop(BorderStyle.THIN); // 设置单元格顶部边框使用的边框类型
cellStyle.setBorderBottom(BorderStyle.THIN); // 设置单元格底部边框使用的边框类型
cellStyle.setBorderLeft(BorderStyle.THIN); // 设置单元格左边框使用的边框类型
cellStyle.setBorderRight(BorderStyle.THIN); // 设置单元格右边框使用的边框类型
cellStyle.setFont(font); // 设置此样式的字体 —— font对象需要在此之前创建
cellStyle.setWrapText(false); // 设置单元格文本是否换行
cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); // 设置单元格前景填充颜色 【注意:确保前景色设置在背景色之前。】
cellStyle.setFillBackgroundColor(IndexedColors.BLACK.getIndex()); // 设置单元格背景填充颜色
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 设置一个充满了前景色的单元格.
1.7 生成Excel文件
// 文件输出路径
private static final String OUT_PATH = "F:\\数据导出\\表格\\学生表";
……
File file = new File(OUT_PATH);
if (file.exists()) {
System.out.println("文件的输出路径已存在 : " + OUT_PATH);
} else {
file.mkdirs(); // 如果文件目录不存在,则逐级创建
System.out.println("文件的输出路径为 : " + OUT_PATH);
}
String fileName = "A1"; // 文件名称
String fileSuffix = ".xls"; // 文件名称后缀
workbook.write(new File(OUT_PATH, fileName + fileSuffix));
// 打开资源管理器到指定文件夹
Runtime.getRuntime().exec("cmd /c start explorer " + ExportExcelTest.OUT_PATH); //ExportExcelTest为类名
—— END ——