Poi 生成xls

来首小诗:

    今日不胜昨日寒,我却把那拖鞋穿,脚儿冰冰秋风瑟,抬头一看碧蓝天。         ---泥沙砖瓦浆木匠

项目需求:

  p2p项目中,需要一些数据报表一xls的格式,提供下载。并给主管签名。

方案:

------------------------

  poi 3.9

------------------------

第一步学习:

了解poi:

  

Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。

结构:

  • HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
  • XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
  • HWPF - 提供读写Microsoft Word DOC格式档案的功能。
  • HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
  • HDGF - 提供读Microsoft Visio格式档案的功能。
  • HPBF - 提供读Microsoft Publisher格式档案的功能。
  • HSMF - 提供读Microsoft Outlook格式档案的功能。

我需要的就是hssf。

poi3.9这里我分享下

链接: http://pan.baidu.com/s/1EHymz 密码: f94c

第二步学习:

清单1.定义新的xls里面工作簿和一个sheet页

Workbook wb = new HSSFWorkbook();                                    //定义一个新的工作簿

Sheet sheet1= wb.createSheet("满标复审模板"); //定义第一个sheet页

清单2.创建一个文件流,并输出一个xls

wb.write(fos);    //  Workbook   将流写进工作簿
FileOutputStream fos = new FileOutputStream("D://测试.xls");          //输出一个新的xls
wb.write(fos);
fos.close();

做了前两个,main里面运行就生成了一个xls

清单3.创建行,单元格-->并赋值  

Row row = sheet1.createRow(0);                                        //为第一个sheet页创建标题
Cell cell = row.createCell(column);                                   //为相应行创建一个单元格
cell.setCellValue("借款标满标确认单");

  并注意,这些写在清单1,2之间。

 

第三步学习:

  鄙人自己想了想,然后学习下,觉得

    1.字体font,单元style归一类

    2.赋值,合并单元格归一类

在一个sheet页里面,

    step1.创建内容

    /**创建 制单人--制单编号**/
        Row row1 = sheet1.createRow(1);                                        
        setRowOfFourSecondTitle(wb, sheet, row1,1,"制单人:",
                "Li","制单编号:","20131115");    

    step2.进入setRowOfFourSecondTitle

/**
* 创建 制单人--制单编号
* @param workbook
* @param sheet
* @param row
* @param column
* @param valString1 //列1的值
* @param valString2 //列2的值
* @param changeString1 //列3的值--填入值
* @param changeString2 //列4的值--填入值
*/

private static void setRowOfFourSecondTitle(Workbook workbook,Sheet sheet,Row row,
            int column,String valString1,String changeString1 ,String valString2,String changeString2) {
        row.setHeightInPoints(40);                                               //行高度
        sheet.setDefaultColumnWidth(30);                                        //设置列的宽度
            
        Cell cel0 = row.createCell(0);                                            //为相应行创建列1 单元格
        cel0.setCellValue(valString1);        
        cel0.setCellStyle(getCellStyleOfOne(workbook));
        
        Cell cell2 = row.createCell(2);                                            //为相应行创建列3单元格
        cell2.setCellValue(valString2);
        cell2.setCellStyle(getCellStyleOfOne(workbook));
        
        
        Cell cell1 = row.createCell(1);                                            //为相应行创建列2单元格
        cell1.setCellValue(changeString1);
        cell1.setCellStyle(getCellStyleOfTwo(workbook));
        
        Cell cell3 = row.createCell(3);
        cell3.setCellValue(changeString2);
        cell3.setCellStyle(getCellStyleOfTwo(workbook));
    }

      step3.由于单元格的里面样式不同

--------------------------------------------

    getCellStyleOfTwo 其一

    getCellStyleOfOne 其二
------------------------------------------

举其中的一个例子:

其一

/**
* 制单人--制单编号 对应样式
* @param workbook
* @return 制单人--制单编号 对应样式
*/

private static CellStyle getCellStyleOfOne(Workbook workbook) {
        CellStyle style1 = workbook.createCellStyle();                            // 样式对象    
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);                // 垂直    
        style1.setAlignment(HSSFCellStyle.ALIGN_RIGHT);                            // 水平   
           
        Font font1=workbook.createFont();
        font1.setColor(HSSFColor.BLACK.index);                                    //字体颜色
        font1.setFontHeightInPoints((short)10);                                    //字体大小
        font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);                            //字体增粗
        
        style1.setFont(font1);
        return style1;
    }

 

第四步学习:

www.baidu.com 文档学习。

总结:

  poi操作xls挺简单的,应用那块也有推荐。可以找找视频学习。主要是一些接口的熟悉。

 

posted @ 2013-11-16 15:31  子木聊出海  阅读(941)  评论(0编辑  收藏  举报