亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java使用poi包讀取Excel文檔代碼分享

2024-07-13 10:13:19
字體:
來源:轉載
供稿:網友

項目需要解析Excel文檔獲取數據,就在網上找了一些資料,結合自己這次使用,寫下心得:

1、maven項目需加入如下依賴:

<dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi</artifactId>    <version>3.10-FINAL</version>  </dependency>  <dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi-ooxml</artifactId>    <version>3.10-FINAL</version>  </dependency>

直接上測試類,類里有完善的注釋:

package shindo.Java;import java.io.FileInputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;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.ss.usermodel.Cell;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ExcelUtil {  public static void main(String[] args) {    String path = "D://IDE//workspace-Neon//Java//src//refund.xls";    try {      List<List<String>> result = new ExcelUtil().readXls(path);      System.out.println(result.size());      for (int i = 0; i < result.size(); i++) {        List<String> model = result.get(i);        System.out.println("orderNum:" + model.get(0) + "--> orderAmount:" + model.get(1));      }    } catch (Exception e) {      e.printStackTrace();    }  }  /**   *   * @Title: readXls   * @Description: 處理xls文件  * @param @param path  * @param @return  * @param @throws Exception  設定文件   * @return List<List<String>>  返回類型   * @throws  *   * 從代碼不難發現其處理邏輯:  * 1.先用InputStream獲取excel文件的io流  * 2.然后穿件一個內存中的excel文件HSSFWorkbook類型對象,這個對象表示了整個excel文件。  * 3.對這個excel文件的每頁做循環處理  * 4.對每頁中每行做循環處理  * 5.對每行中的每個單元格做處理,獲取這個單元格的值  * 6.把這行的結果添加到一個List數組中  * 7.把每行的結果添加到最后的總結果中  * 8.解析完以后就獲取了一個List<List<String>>類型的對象了  *    */  private List<List<String>> readXls(String path) throws Exception {    InputStream is = new FileInputStream(path);    // HSSFWorkbook 標識整個excel    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);    List<List<String>> result = new ArrayList<List<String>>();    int size = hssfWorkbook.getNumberOfSheets();    // 循環每一頁,并處理當前循環頁    for (int numSheet = 0; numSheet < size; numSheet++) {      // HSSFSheet 標識某一頁      HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);      if (hssfSheet == null) {        continue;      }      // 處理當前頁,循環讀取每一行      for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {        // HSSFRow表示行        HSSFRow hssfRow = hssfSheet.getRow(rowNum);        int minColIx = hssfRow.getFirstCellNum();        int maxColIx = hssfRow.getLastCellNum();        List<String> rowList = new ArrayList<String>();        // 遍歷改行,獲取處理每個cell元素        for (int colIx = minColIx; colIx < maxColIx; colIx++) {          // HSSFCell 表示單元格          HSSFCell cell = hssfRow.getCell(colIx);          if (cell == null) {            continue;          }          rowList.add(getStringVal(cell));        }        result.add(rowList);      }    }    return result;  }  /**   *   * @Title: readXlsx   * @Description: 處理Xlsx文件  * @param @param path  * @param @return  * @param @throws Exception  設定文件   * @return List<List<String>>  返回類型   * @throws   */  private List<List<String>> readXlsx(String path) throws Exception {    InputStream is = new FileInputStream(path);    XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);    List<List<String>> result = new ArrayList<List<String>>();    // 循環每一頁,并處理當前循環頁    for (XSSFSheet xssfSheet : xssfWorkbook) {      if (xssfSheet == null) {        continue;      }      // 處理當前頁,循環讀取每一行      for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {        XSSFRow xssfRow = xssfSheet.getRow(rowNum);        int minColIx = xssfRow.getFirstCellNum();        int maxColIx = xssfRow.getLastCellNum();        List<String> rowList = new ArrayList<String>();        for (int colIx = minColIx; colIx < maxColIx; colIx++) {          XSSFCell cell = xssfRow.getCell(colIx);          if (cell == null) {            continue;          }          rowList.add(cell.toString());        }        result.add(rowList);      }    }    return result;  }  // 存在的問題  /*   * 其實有時候我們希望得到的數據就是excel中的數據,可是最后發現結果不理想   * 如果你的excel中的數據是數字,你會發現Java中對應的變成了科學計數法。   * 所以在獲取值的時候就要做一些特殊處理來保證得到自己想要的結果   * 網上的做法是對于數值型的數據格式化,獲取自己想要的結果。   * 下面提供另外一種方法,在此之前,我們先看一下poi中對于toString()方法:   *    * 該方法是poi的方法,從源碼中我們可以發現,該處理流程是:   * 1.獲取單元格的類型   * 2.根據類型格式化數據并輸出。這樣就產生了很多不是我們想要的   * 故對這個方法做一個改造。   */  /*public String toString(){    switch(getCellType()){      case CELL_TYPE_BLANK:        return "";      case CELL_TYPE_BOOLEAN:        return getBooleanCellValue() ? "TRUE" : "FALSE";      case CELL_TYPE_ERROR:        return ErrorEval.getText(getErrorCellValue());      case CELL_TYPE_FORMULA:         return getCellFormula();      case CELL_TYPE_NUMERIC:        if(DateUtil.isCellDateFormatted(this)){          DateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy")          return sdf.format(getDateCellValue());        }        return getNumericCellValue() + "";      case CELL_TYPE_STRING:         return getRichStringCellValue().toString();      default :        return "Unknown Cell Type:" + getCellType();    }  }*/  /**   * 改造poi默認的toString()方法如下  * @Title: getStringVal   * @Description: 1.對于不熟悉的類型,或者為空則返回""控制串  *        2.如果是數字,則修改單元格類型為String,然后返回String,這樣就保證數字不被格式化了  * @param @param cell  * @param @return  設定文件   * @return String  返回類型   * @throws   */  public static String getStringVal(HSSFCell cell) {    switch (cell.getCellType()) {    case Cell.CELL_TYPE_BOOLEAN:      return cell.getBooleanCellValue() ? "TRUE" : "FALSE";    case Cell.CELL_TYPE_FORMULA:      return cell.getCellFormula();    case Cell.CELL_TYPE_NUMERIC:      cell.setCellType(Cell.CELL_TYPE_STRING);      return cell.getStringCellValue();    case Cell.CELL_TYPE_STRING:      return cell.getStringCellValue();    default:      return "";    }  }}

總結

以上就是本文關于Java使用poi包讀取Excel文檔代碼分享的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品国产自产拍高清av水多| 国产精品ⅴa在线观看h| 成人性生交大片免费看视频直播| 欧美xxxx14xxxxx性爽| 亚洲天堂男人的天堂| 亚洲国产天堂久久综合网| xvideos成人免费中文版| 亚洲精品久久久久久久久久久久久| 亚洲淫片在线视频| 在线观看国产精品91| 国产美女久久精品| 亚洲综合在线小说| 日韩人体视频一二区| 久久亚洲精品毛片| xxxx欧美18另类的高清| 精品国偷自产在线视频99| 97视频在线观看亚洲| 日韩av色综合| 日韩在线观看免费| y97精品国产97久久久久久| 国产日韩欧美在线视频观看| 亚洲人午夜色婷婷| 亚洲激情电影中文字幕| 亚洲成人a级网| 在线观看欧美视频| 国产精品99一区| 久久久久久亚洲精品中文字幕| 午夜免费日韩视频| 欧美在线国产精品| 国产精品嫩草影院久久久| 国产日韩在线观看av| 欧美另类99xxxxx| 欧美精品videossex性护士| 青草成人免费视频| 国产成+人+综合+亚洲欧洲| 一区三区二区视频| 日韩二区三区在线| 亚洲最大的网站| 色妞在线综合亚洲欧美| 欧美极品少妇xxxxⅹ免费视频| 亚洲欧美国产va在线影院| 91久久国产精品91久久性色| 国产精品青青在线观看爽香蕉| 亚洲男人天堂视频| 欧美极品美女视频网站在线观看免费| 亚洲视频欧洲视频| 日韩有码在线视频| 日韩中文字幕精品视频| 2019国产精品自在线拍国产不卡| 日本久久久久久| 亚洲天堂av在线免费观看| 茄子视频成人在线| 亚洲欧美在线一区| 国产精品27p| 国产精品免费视频久久久| 91精品一区二区| 国内精品国产三级国产在线专| 国产精品爽爽ⅴa在线观看| 欧美成人精品激情在线观看| 在线一区二区日韩| 亚洲日本欧美中文幕| 国产免费一区二区三区在线观看| 欧美成人剧情片在线观看| 日韩在线视频一区| 午夜欧美不卡精品aaaaa| 成人黄在线观看| 欧美www视频在线观看| 91在线国产电影| 97精品在线观看| 欧美黑人性生活视频| 日韩一区二区三区国产| 亚洲码在线观看| 97久久精品视频| 欧美亚洲国产日本| 色综合久综合久久综合久鬼88| 精品免费在线视频| 国产精品成人一区| 国产综合在线看| 热久久美女精品天天吊色| 久久精品在线视频| 欧美午夜精品久久久久久久| 91热精品视频| 国产视频精品xxxx| 中文字幕在线看视频国产欧美| 欧美日韩国产丝袜美女| 91精品视频在线播放| 欧美一区深夜视频| 亚洲女在线观看| 伊人久久综合97精品| 搡老女人一区二区三区视频tv| 亚洲有声小说3d| 欧美电影免费观看| 狠狠久久亚洲欧美专区| 亚洲精品美女在线观看| 久久精品一偷一偷国产| 国产精品jizz在线观看麻豆| 精品成人69xx.xyz| 亚洲精品久久久一区二区三区| 欧美巨乳美女视频| 中文字幕国内精品| 久久精品视频网站| 69影院欧美专区视频| 欧美理论片在线观看| 日韩av网址在线观看| 日韩av网站导航| 欧美视频免费在线观看| 中文字幕av一区中文字幕天堂| 日韩av观看网址| 久久这里有精品| 国产精品吹潮在线观看| 亚洲国产高清自拍| 亚洲欧洲在线免费| 久久全球大尺度高清视频| 精品国产区一区二区三区在线观看| 欧美在线精品免播放器视频| 久久精品视频在线观看| 精品国产一区二区在线| 国产精品久久久久久超碰| 最近2019中文字幕大全第二页| 亚洲在线观看视频网站| 中文字幕亚洲一区在线观看| 伊人久久久久久久久久久| 亚洲男人的天堂在线| 久久av红桃一区二区小说| 海角国产乱辈乱精品视频| 欧美性xxxx| 色中色综合影院手机版在线观看| 插插插亚洲综合网| 欧美日本在线视频中文字字幕| 亚洲欧洲日韩国产| 最近2019年手机中文字幕| 欧美成人黄色小视频| 欧美另类69精品久久久久9999| 亚洲精品电影在线观看| 国产激情综合五月久久| 亚洲精品自在久久| 国产不卡精品视男人的天堂| 日韩精品久久久久| 国产精品私拍pans大尺度在线| 亚洲jizzjizz日本少妇| 国产一区二区三区视频在线观看| 亚洲自拍偷拍网址| 亚洲欧美日韩国产中文专区| 成人激情视频在线观看| 亚洲精品视频免费在线观看| 国产成人亚洲综合91| 日韩欧美一区视频| 亚洲性猛交xxxxwww| 97精品久久久中文字幕免费| 亚洲色图第三页| 国产成人一区二区三区电影| 欧美国产精品va在线观看| 中文字幕少妇一区二区三区| 欧美激情亚洲一区| 国产日韩av在线| 欧美wwwwww| 欧美精品久久久久| 国产在线观看不卡| 亚洲欧美日韩国产中文| 欧美激情视频网| 九九九热精品免费视频观看网站| 国产91精品久| 久久久91精品国产| 国外色69视频在线观看|