Jakarta_POI 使用Java读写Excel(97-2002)文件,可以满足大部分的需要。POI下面有几个自项目HSSF用来实现Excel的读写。
目录:
创建一个workbook
创建一个sheet
创建cells
创建日期cells
设定单元格格式
说明:
以下可能需要使用到如下的类
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor;
创建workbook
// 使用默认的构造方法创建workbook HSSFWorkbook wb = new HSSFWorkbook(); FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); // 指定文件名 fileOut.close(); // 输出到文件
创建一个sheet
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet("new sheet"); // workbook创建sheet HSSFSheet sheet2 = wb.createSheet("second sheet"); // workbook创建另外的sheet FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close();
创建cells
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFRow row = sheet.createRow((short)0); // sheet 创建一行 HSSFCell cell = row.createCell((short)0); // 行创建一个单元格 cell.setCellValue(1); // 设定单元格的值 row.createCell((short)1).setCellValue(1.2); // Double、Float row.createCell((short)2).setCellValue("This is a string"); // String row.createCell((short)3).setCellValue(true); // Boolean FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close();
创建日期cells
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFRow row = sheet.createRow((short)0); HSSFCell cell = row.createCell((short)0); cell.setCellValue(new Date()); // 设定值为日期 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm")); // 指定日期显示格式 cell = row.createCell((short)1); cell.setCellValue(new Date()); cell.setCellStyle(cellStyle); // 设定单元格日期显示格式 FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close();
设定单元格格式
单元格格式的设定有很多形式包括单元格的对齐方式,内容的字体设置,单元格的背景色等,因为形式比较多,只举一些例子.以下的例子在POI1.5中可能会有所改变具体查看API。
HSSFCellStyle style = wb.createCellStyle(); // 创建一个样式 style.setFillBackgroundColor(HSSFCellStyle.AQUA); style.setFillPattern(HSSFCellStyle.BIG_SPOTS); // 设定此样式的的背景颜色填充 //样式的填充类型。有多种式样如: //HSSFCellStyle.BIG_SPOTS //HSSFCellStyle.FINE_DOTS //HSSFCellStyle.SPARSE_DOTS等 style.setAlignment(HSSFCellStyle.ALIGN_CENTER ); // 居中对齐 style.setFillBackgroundColor(HSSFColor.GREEN.index); // 设定单元个背景颜色 style.setFillForegroundColor(HSSFColor.RED.index); // 设置单元格显示颜色 HSSFCell cell = row.createCell((short) 1); cell.setCellValue("单元格值"); cell.setCellStyle(style);
使用poi的hssf生成一个excel文件以后,有一个主类Workbook(相当于一个excel文件)的方法Workbook.write(OutputStream)可以写到response.getOutputStream()里面。如果事先设置response的contentType为excel和下载的附件名称就可下载excel。
HSSFWorkbook book = _proxy.expertExcel(_formBean, _login); if (book != null) { response.setContentType ("application/ms-excel") ; response.setHeader ("Content-Disposition", "attachment;filename=" + new String("导出Excel.xls".getBytes(), "iso-8859-1″)) ; book.write(response.getOutputStream()); }
其中expertExcel无非是从数据库或者其他地方获取数据创建excel即可。