Sun River
          Topics about Java SE, Servlet/JSP, JDBC, MultiThread, UML, Design Pattern, CSS, JavaScript, Maven, JBoss, Tomcat, ...
          posts - 78,comments - 0,trackbacks - 0
          POI
          Example One:創建XLS

          群眾:笑死人了,這還要你教么,別丟人現眼了,用FileOutputStream就可以了,寫個文件,擴展名為xls就可以了,哈哈,都懶得看你的,估計又是個水貨上來瞎喊,下去,喲貨~~

          小筆:無聊的人一邊去,懶得教你,都沒試過,還雞叫雞叫,&^%&**(()&%$#$#@#@


              HSSFWorkbook wb = new HSSFWorkbook();//構建新的XLS文檔對象
              FileOutputStream fileOut = new FileOutputStream("workbook.xls");
              wb.write(fileOut);//注意,參數是文件輸出流對象
              fileOut.close();



          Example Two:創建Sheet

          群眾:有點責任心好吧,什么是Sheet?欺負我們???

          小筆:花300塊去參加Office 培訓班去,我不負責教預科


             HSSFWorkbook wb = new HSSFWorkbook();//創建文檔對象
              HSSFSheet sheet1 = wb.createSheet("new sheet");//創建Sheet對象,參數為Sheet的標題
              HSSFSheet sheet2 = wb.createSheet("second sheet");//同上,注意,同是wb對象,是一個XLS的兩個Sheet
              FileOutputStream fileOut = new FileOutputStream("workbook.xls");
              wb.write(fileOut);
              fileOut.close();


          Example Three:創建小表格,并為之填上數據

          群眾:什么是小表格啊?

          小筆:你用過Excel嗎?人家E哥天天都穿的是網格襯衫~~~~


                            HSSFWorkbook document = new HSSFWorkbook();//創建XLS文檔

          HSSFSheet salary = document.createSheet("薪水");//創建Sheet

          HSSFRow titleRow = salary.createRow(0);//創建本Sheet的第一行



          titleRow.createCell((short) 0).setCellValue("工號");//設置第一行第一列的值
          titleRow.createCell((short) 1).setCellValue("薪水");//......
          titleRow.createCell((short) 2).setCellValue("金額");//設置第一行第二列的值


          File filePath = new File(baseDir+"excel/example/");

          if(!filePath.exists())
          filePath.mkdirs();

          FileOutputStream fileSystem = new FileOutputStream(filePath.getAbsolutePath()+"/Three.xls");

          document.write(fileSystem);

          fileSystem.close();

           

          Example Four :帶自定義樣式的數據(eg:Date)

          群眾:Date!么搞錯,我昨天已經插入成功了~

          小筆:是么?那我如果要你5/7/06 4:23這樣輸出你咋搞?

          群眾:無聊么?能寫進去就行了!

          小筆:一邊涼快去~


                            HSSFWorkbook document = new HSSFWorkbook();

          HSSFSheet sheet = document.createSheet("日期格式");

          HSSFRow row = sheet.createRow(0);


          HSSFCell secondCell = row.createCell((short) 0);

          /**
           * 創建表格樣式對象
           */
          HSSFCellStyle style = document.createCellStyle();

          /**
           * 定義數據顯示格式
           */
          style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));

          /**
           * setter
           */
          secondCell.setCellValue(new Date());

          /**
           * 設置樣式
           */
          secondCell.setCellStyle(style);



          File filePath = new File(baseDir+"excel/example/");

          if(!filePath.exists())
          filePath.mkdirs();

          FileOutputStream fileSystem = new FileOutputStream(filePath.getAbsolutePath()+"/Four.xls");

          document.write(fileSystem);

          fileSystem.close();

          Example Five:讀取XLS文檔


          File filePath = new File(baseDir+"excel/example/");

          if(!filePath.exists())
          throw new Exception("沒有該文件");
          /**
           * 創建對XLS進行讀取的流對象
           */
          POIFSFileSystem reader = new POIFSFileSystem(new FileInputStream(filePath.getAbsolutePath()+"/Three.xls"));
          /**
           * 從流對象中分離出文檔對象
           */
          HSSFWorkbook document = new HSSFWorkbook(reader);
          /**
           * 通過文檔對象獲取Sheet
           */
          HSSFSheet sheet = document.getSheetAt(0);
          /**
           * 通過Sheet獲取指定行對象
           */
          HSSFRow row = sheet.getRow(0);
          /**
           * 通過行、列定位Cell
           */
          HSSFCell cell = row.getCell((short) 0);

          /**
           * 輸出表格數據
           */
          log.info(cell.getStringCellValue());


          至此,使用POI操作Excel的介紹告一段落,POI是一個仍然在不斷改善的項目,有很多問題,比如說中文問題,大數據量內存溢出問題等等,但這個Pure Java的庫的性能仍然是不容質疑的,是居家旅行必備良品。

          而且開源軟件有那么一大點好處是,可以根據自己的需要自己去定制。如果大家有中文、性能等問題沒解決的,可以跟我索要我已經改好的庫。當然,你要自己看原代碼,我也不攔你。


          posted on 2007-08-09 12:37 Sun River 閱讀(296) 評論(0)  編輯  收藏 所屬分類: Struts
          主站蜘蛛池模板: 甘南县| 攀枝花市| 航空| 南京市| 鄂托克前旗| 宜城市| 三亚市| 历史| 五台县| 婺源县| 枣强县| 新闻| 都匀市| 新安县| 土默特左旗| 图木舒克市| 卓尼县| 丹江口市| 南康市| 高雄县| 德保县| 古交市| 巴南区| 金门县| 宜宾市| 新巴尔虎左旗| 宝鸡市| 化德县| 蒙阴县| 临泽县| 永泰县| 色达县| 民和| 收藏| 衡山县| 信宜市| 全州县| 玉林市| 靖安县| 分宜县| 北宁市|