一直想写一个poi的使用的总结,话说我第一份正式工做接到的第一个工做就是当时TL让我去整理项目的数据字典,即把内容插入到CSV上,而后把csv的内容插入到数据库中,并且我印象极深的当时使用的就是poi。 html
今天翻之前的笔记,正好是我当时学POI的一些笔记。这里整理一下。 java
这里提一下,java操做excel的组件除了apache的poi,还有jexcelapi(jxl),其中poi组件的获取地址为poi.apache.org。 数据库
poi组件中经常使用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工做薄,HSSFRow表示工做薄中的一行,HSSFCell表示一个单元格 apache
下面是一个简单的写入的demo api
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,能够参考这里: excel
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 code
http://www.yesky.com/18/1886018.shtml orm
总结一下,poi的使用比较简单,主要是写入和读取的时候计算好读取的位置。并且如今项目中已经封装了一个现成的类,几乎几行代码就能够把结果输出到一个excel中并提供下载,PS:很怀念刚工做时的那段日子。 htm