JAVA

          人生若只如初見(jiàn),何事秋風(fēng)悲畫(huà)扇。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            50 隨筆 :: 25 文章 :: 157 評(píng)論 :: 0 Trackbacks

            這里解析excel文件用了第三方所提供的一些類庫(kù)。Jakarta的POI項(xiàng)目提供了一組操縱Windows文檔的Java API,如下幾個(gè)類提供了操作Excel文

            件的方便的途徑:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,分別代表了Excel電子表格中的Book、Sheet、行和單元格。你可以在下面地址下載到最新的POI工具包:
            http://jakarta.apache.org/poi/index.html

          一些常用操作如下:

          // 所導(dǎo)入的第三方類包
          import ?org.apache.poi.hssf.usermodel.HSSFCell;
          import ?org.apache.poi.hssf.usermodel.HSSFRow;
          import ?org.apache.poi.hssf.usermodel.HSSFSheet;
          import ?org.apache.poi.hssf.usermodel.HSSFWorkbook;
          import ?org.apache.poi.poifs.filesystem.POIFSFileSystem;

          // 初始化
          POIFSFileSystem?poiFs = new ?POIFSFileSystem(inputStream);
          HSSFWorkbook?wb?
          = ? new ?HSSFWorkbook(poiFs);
          HSSFSheet?sheet?
          = ?wb.getSheetAt( 0 );
          int ?rowNumber = sheet.getFirstRowNum();
          int ?lastRowNumber = sheet.getLastRowNum();


            通過(guò)sheet.getRow(rowNumber)取得一行的數(shù)據(jù)。

            對(duì)每一行HSSFRow,它可以通過(guò)getFirstCellNum(cellNum) or getLastCellNum(cellNum)取得此行的格數(shù)(列數(shù))。

            通過(guò)HSSFCell可以判斷每個(gè)表格中的數(shù)據(jù)類型,DOC中描述如下:

          ?

          static ? int ?CELL_TYPE_BLANK?
          ??????????Blank?Cell?type?(
          3 )?
          static ? int ?CELL_TYPE_BOOLEAN?
          ??????????Boolean?Cell?type?(
          4 )?
          static ? int ?CELL_TYPE_ERROR?
          ??????????Error?Cell?type?(
          5 )?
          static ? int ?CELL_TYPE_FORMULA?
          ??????????Formula?Cell?type?(
          2 )?
          static ? int ?CELL_TYPE_NUMERIC?
          ??????????Numeric?Cell?type?(
          0 )?
          static ? int ?CELL_TYPE_STRING?
          ??????????String?Cell?type?(
          1 )?


            這樣,對(duì)于一個(gè)現(xiàn)有的excel文件,我們可以取得它所以行的數(shù)據(jù),并對(duì)行中的每條數(shù)據(jù)根據(jù)不同的類型進(jìn)行操作了!

          將excel文件中的一行具體cell轉(zhuǎn)換成java數(shù)據(jù)實(shí)例:

          ? private ?String?getStringCellValue(HSSFCell?cell, boolean ?dateFlag) {
          ????????String?value
          = null ;
          ????????
          if (cell == null )
          ????????????
          return ? null ;
          ????????
          switch ?(cell.getCellType()) {
          ????????????????
          ????????????
          case ?HSSFCell.CELL_TYPE_BOOLEAN:
          ????????????????value
          = String.valueOf(cell.getBooleanCellValue());

          ????????????????
          break ;
          ????????????
          case ?HSSFCell.CELL_TYPE_NUMERIC:
          ??????????????
          if (dateFlag)
          ????????????????????value
          = new ?java.text.SimpleDateFormat( " yyyy-MM-dd?HH:mm " ).format(cell.getDateCellValue());
          ????????????????
          else ? {
          // ????????????????????value=String.valueOf(cell.getNumericCellValue());
          ????????????????????value? = ? new ?DecimalFormat( " 0.########## " ).format(cell.getNumericCellValue());
          ????????????????}

          ????????????????
          break ;
          ????????????
          case ?HSSFCell.CELL_TYPE_ERROR:
          ????????????????value
          = String.valueOf(cell.getErrorCellValue());
          ????????????????
          break ;
          ????????????
          case ?HSSFCell.CELL_TYPE_FORMULA:
          ????????????
          case ?HSSFCell.CELL_TYPE_BLANK:?
          ????????????
          case ?HSSFCell.CELL_TYPE_STRING:
          ????????????????value
          = cell.getStringCellValue();
          ????????????????????
          if (DATE_CELL.equals(value))
          ????????????????????????dateCellNumber
          = cell.getCellNum();
          ????????????????
          break ;
          ????????}

          ????????
          return ?value;
          ????}

          ?

            到了現(xiàn)在實(shí)中應(yīng)用當(dāng)然不會(huì)這么簡(jiǎn)單,此類庫(kù)的更多功能我們可以參考其API,在此將中附帶了API。

            參考:http://jakarta.apache.org

          posted on 2006-05-30 18:30 Jkallen 閱讀(5477) 評(píng)論(3)  編輯  收藏 所屬分類: JEE學(xué)習(xí)其它開(kāi)源

          評(píng)論

          # re: 借第三方類型庫(kù)解析excel文件 2006-06-26 13:54 nina
          這個(gè)是java的嗎?
          你由南京郵電余的講座嗎?我沒(méi)找到呢!!  回復(fù)  更多評(píng)論
            

          # re: 借第三方類型庫(kù)解析excel文件 2006-06-29 10:50 nina
          呵呵,是嗎,我宿捨上不了網(wǎng)、
          你對(duì)java熟悉嗎?
          我有一個(gè)在vs 2003用的很好,但是在2005就用不了,也不知道到底哪裡沒(méi)調(diào)用,但是奇怪的是,窗口縮小時(shí)就調(diào)用了  回復(fù)  更多評(píng)論
            

          # re: 借第三方類型庫(kù)解析excel文件 2006-06-29 10:50 nina
          錯(cuò)了,是javascript  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 遂昌县| 卢龙县| 崇左市| 博兴县| 石首市| 历史| 怀化市| 房产| 资源县| 贵州省| 新河县| 荆州市| 墨脱县| 西乡县| 甘南县| 英德市| 博白县| 京山县| 定陶县| 清丰县| 张家界市| 淮阳县| 博罗县| 武城县| 南丹县| 自贡市| 黔西县| 衡东县| 离岛区| 高州市| 万全县| 澄城县| 潼南县| 屯留县| 金乡县| 西乌| 五原县| 福鼎市| 诏安县| 南雄市| 南华县|