HSFWorkbookApache POI提供的Java类库可用于生成Excel 97-2003格式的文件(.xls)。使用HSSFWorkbook导出Excel需要以下步骤:
- 创建工作簿对象
HSSFWorkbook workbook = new HSSFWorkbook();
- 创建工作表对象
HSSFSheet sheet = workbook.createSheet(Sheet1);
- 创建表头线,设置单元格式风格
HSSFRow headerRow = sheet.createRow(0);HSSFCellStyle headerStyle = workbook.createCellStyle();headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);headerStyle.setFillForegroundColor(IndexedColors.BLUE.index);headerStyle.setBorderBottom(BorderStyle.THIN);headerStyle.setBorderLeft(BorderStyle.THIN);headerStyle.setBorderRight(BorderStyle.THIN);headerStyle.setBorderTop(BorderStyle.THIN);// 创建表头单元格,设置单元格式HSSFCell headercell1 = headerRow.createCell(0);headercell1.setCellValue(“姓名”);headercell1.setCellStyle(headerStyle);HSSFCell headercell2 = headerRow.createCell(1);headercell2.setCellValue(年龄);headercell2.setCellStyle(headerStyle);HSSFCell headercel3 = headerRow.createCell(2);headercel3.setCellValue(性别);headercel3.setCellStyle(headerStyle);
- 添加数据行并设置单元格式样式
List<User> userList = getUserList();for (int i = 0; i < userList.size(); i++) { HSSFRow dataRow = sheet.createRow(i + 1); User user = userList.get(i); HSSFCell datacel1 = dataRow.createCell(0); datacel1.setCellValue(user.getName()); HSSFCell datacel2 = dataRow.createCell(1); datacel2.setCellValue(user.getAge()); HSSFCell datacell3 = dataRow.createCell(2); datacell3.setCellValue(user.getGender());}
- 设置列宽
sheet.setColumnWidth(0, 20 * 256); // 设置第一列宽度sheetet.setColumnWidth(1, 10 * 256); // 设置第二列宽度sheetet.setColumnWidth(2, 10 * 256); // 设置第三列宽度
- 写入文件
FileOutputStream out = new FileOutputStream("test.xls");workbook.write(out);out.close();
完整的示例代码:
public static void exportExcel() throws IOException { // 创建工作簿对象 HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作表对象 HSSFSheet sheet = workbook.createSheet(Sheet1); // 创造表头行,并设置单元格式样式 HSSFRow headerRow = sheet.createRow(0); HSSFCellStyle headerStyle = workbook.createCellStyle(); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFillForegroundColor(IndexedColors.BLUE.index); headerStyle.setBorderBottom(BorderStyle.THIN); headerStyle.setBorderLeft(BorderStyle.THIN); headerStyle.setBorderRight(BorderStyle.THIN); headerStyle.setBorderTop(BorderStyle.THIN); // 创建表头单元格,并设置单元格式样式 HSSFCell headercell1 = headerRow.createCell(0); headercell1.setCellValue(“姓名”); headercell1.setCellStyle(headerStyle); HSSFCell headercell2 = headerRow.createCell(1); headercell2.setCellValue(年龄); headercell2.setCellStyle(headerStyle); HSSFCell headercel3 = headerRow.createCell(2); headercel3.setCellValue(性别); headercel3.setCellStyle(headerStyle); // 添加数据行,并设置单元格式样式 List<User> userList = getUserList(); for (int i = 0; i < userList.size(); i++) { HSSFRow dataRow = sheet.createRow(i + 1); User user = userList.get(i); HSSFCell datacel1 = dataRow.createCell(0); datacel1.setCellValue(user.getName()); HSSFCell datacel2 = dataRow.createCell(1); datacel2.setCellValue(user.getAge()); HSSFCell datacell3 = dataRow.createCell(2); datacell3.setCellValue(user.getGender()); } // 设置列宽 sheet.setColumnWidth(0, 20 * 256); // 设置第一列的宽度 sheet.setColumnWidth(1, 10 * 256); // 设置第二列宽度 sheet.setColumnWidth(2, 10 * 256); // 设置第三列宽度 // 写入文件 FileOutputStream out = new FileOutputStream("test.xls"); workbook.write(out); out.close();}private static List<User> getUserList() { List<User> userList = new ArrayList<>(); userList.add(new User(张三), 25, "男")); userList.add(new User(李四), 30, "女")); userList.add(new User(王五”, 28, "男")); return userList;}private static class User { private String name; private int age; private String gender; public User(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public int getAge() { return age; } public String getGender() { return gender; }}
例如,我们首先创建了一个名为workbok的HSSFworkbook对象来表示整个工作簿。然后我们创建了一个名为sheet1的工作表对象,并将其添加到工作簿中。
接下来,我们创建了一行表头,并设置了单元格式。我们将单元格式设置为填充蓝色,并将边框设置为细线。然后,我们创建了三个表单元格,并将其添加到表单行中,同时设置单元格式样式。
然后我们通过获取网站()获取数据行。循环列表并创建银行,并在银行中添加数据单元格。最后,我们设置了列宽,并将工作簿写入名为test.在xls文件中。
以上是基本的 HSSFWorkbook 导出 Excel 可根据需要进行扩展和定制。