文中处理的excel是2003年以前的版本,使用HSSFworkbook,如果处理2007版本以后的excel,用XSSFworkbook,对于二者的兼容性问题,可参考
http://blog.csdn.net/mmm333zzz/article/details/7962377
poi组件中常用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工作薄,HSSFRow表示工作薄中的一行,HSSFCell表示一个单元格
下面是一个简单的写入的demo
public static void main(String [] args){
try {
HSSFWorkbook workbook= new HSSFWorkbook();
HSSFSheet sheet= workbook.createSheet("test");
HSSFRow row = sheet.createRow(1);
HSSFCell cell= row.createCell(2);
cell.setCellValue("test");
FileOutputStream os= null;
os = new FileOutputStream("fisrtExcel.xls");
workbook.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ok");
}
下面是一个简单的读取demo
try {
FileInputStream file= new FileInputStream("fisrtExcel.xls");
POIFSFileSystem ts= new POIFSFileSystem(file);
HSSFWorkbook wb=new HSSFWorkbook(ts);
HSSFSheet sh= wb.getSheetAt(0);
HSSFRow ro=null;
for (int i = 0; sh.getRow(i)!=null; i++) {
ro=sh.getRow(i);
for (int j = 0; ro.getCell(j)!=null; j++) {
System.out.print(ro.getCell(j)+"");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ok");
下面是几个常用的api
//使用公式
cell2.setCellFormula("B2");
//设置列宽
sheet.setColumnWidth(columnIndex, width);
//设置行高
row.setHeight(height);
//设这样式:
HSSFFont font= workbook.createFont();
font.setFontHeightInPoints(height);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("黑体");
HSSFCellStyle style= workbook.createCellStyle();
style.setFont(font);
//style可以设置对齐样式,边框,和格式化日期。
cell.setCellStyle(style);
//合并单元格
sheet.addMergedRegion(region);
我们之前提到了一个jxl的使用。当时在网上也找到了一个使用的demo,可以参考这里:
public static void main(String [] args){
try {
WritableWorkbook wwb = null;
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File("jxlexcel"));
if(wwb!=null){
//创建一个可写入的工作表
WritableSheet ws = wwb.createSheet("sheet1", 0);
for(inti=0;i<10;i++){
for(intj=0;j<5;j++){
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
ws.addCell(labelC);
}
}
wwb.write();
wwb.close();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ok");
}
对于更复杂的内容这里有几个参考文档:
http://www.newxing.com/Tech/Java/Web/Excel_186.html
http://www.yesky.com/18/1886018.shtml
总结一下,poi的使用比较简单,主要是写入和读取的时候计算好读取的位置。而且现在项目中已经封装了一个现成的类,几乎几行代码就可以把结果输出到一个excel中并提供下载