JAVA使用POI操做excel

一直想写一个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

相关文章
相关标签/搜索