zoukankan      html  css  js  c++  java
  • java解析EXCEL

    http://www.cnblogs.com/zhangfei/p/4171014.html;

    java 读取EXCLE文件的步骤:

    1.通过WorkbookFactory获取一个 Workbook

    2.通过Workbook获取Sheet

    3.通过Sheet获取ROW

    4.通过ROW 获取CELL ;

    WorkbookFactory ( WorkbookFactory.create(inStream);) >>>>>

    用的是POI的JAR包,兼容EXCEL2003及2007+版本的EXCEL

    所需要的JAR包:

    poi-3.8.jar

    poi-ooxml.jar

    poi-ooxml-schemas.jar

    xmlbeans.jar

    代码如下:

      1 package main.java.commUtils;
      2 
      3 import org.apache.poi.ss.usermodel.*;
      4 
      5 import java.io.File;
      6 import java.io.FileInputStream;
      7 import java.io.IOException;
      8 import java.util.ArrayList;
      9 import java.util.HashMap;
     10 import java.util.List;
     11 import java.util.Map;
     12 
     13 
     14 public class ExcelReader {
     15     private String filePath;
     16     private String sheetName;
     17     private Workbook workBook;
     18     private Sheet sheet;
     19     private List<String> columnHeaderList;
     20     private List<List<String>> listData;
     21     private List<Map<String, String>> mapData;
     22     private boolean flag;
     23 
     24     public ExcelReader(String filePath, String sheetName) {
     25         this.filePath = filePath;
     26         this.sheetName = sheetName;
     27         this.flag = false;
     28         this.load();
     29     }
     30 
     31     private void load() {
     32         FileInputStream inStream = null;
     33         try {
     34             inStream = new FileInputStream(new File(filePath));
     35             workBook = WorkbookFactory.create(inStream);
     36             sheet = workBook.getSheet(sheetName);
     37         } catch (Exception e) {
     38             e.printStackTrace();
     39         } finally {
     40             try {
     41                 if (inStream != null) {
     42                     inStream.close();
     43                 }
     44             } catch (IOException e) {
     45                 e.printStackTrace();
     46             }
     47         }
     48     }
     49 
     50     private String getCellValue(Cell cell) {
     51         String cellValue = "";
     52         DataFormatter formatter = new DataFormatter();
     53         if (cell != null) {
     54             switch (cell.getCellType()) {
     55                 case Cell.CELL_TYPE_NUMERIC:
     56                     if (DateUtil.isCellDateFormatted(cell)) {
     57                         cellValue = formatter.formatCellValue(cell);
     58                     } else {
     59                         double value = cell.getNumericCellValue();
     60                         int intValue = (int) value;
     61                         cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value);
     62                     }
     63                     break;
     64                 case Cell.CELL_TYPE_STRING:
     65                     cellValue = cell.getStringCellValue();
     66                     break;
     67                 case Cell.CELL_TYPE_BOOLEAN:
     68                     cellValue = String.valueOf(cell.getBooleanCellValue());
     69                     break;
     70                 case Cell.CELL_TYPE_FORMULA:
     71                     cellValue = String.valueOf(cell.getCellFormula());
     72                     break;
     73                 case Cell.CELL_TYPE_BLANK:
     74                     cellValue = "";
     75                     break;
     76                 case Cell.CELL_TYPE_ERROR:
     77                     cellValue = "";
     78                     break;
     79                 default:
     80                     cellValue = cell.toString().trim();
     81                     break;
     82             }
     83         }
     84         return cellValue.trim();
     85     }
     86 
     87     private void getSheetData() {
     88         listData = new ArrayList<List<String>>();
     89         mapData = new ArrayList<Map<String, String>>();
     90         columnHeaderList = new ArrayList<String>();
     91         int numOfRows = sheet.getLastRowNum() + 1;
     92         for (int i = 0; i < numOfRows; i++) {
     93             Row row = sheet.getRow(i);
     94             Map<String, String> map = new HashMap<String, String>();
     95             List<String> list = new ArrayList<String>();
     96             if (row != null) {
     97                 for (int j = 0; j < row.getLastCellNum(); j++) {
     98                     Cell cell = row.getCell(j);
     99                     if (i == 0) {
    100                         columnHeaderList.add(getCellValue(cell));
    101                     } else {
    102                         map.put(columnHeaderList.get(j), this.getCellValue(cell));
    103                     }
    104                     list.add(this.getCellValue(cell));
    105                 }
    106             }
    107             if (i > 0) {
    108                 mapData.add(map);
    109             }
    110             listData.add(list);
    111 
    112         }
    113         flag = true;
    114     }
    115 
    116     public String getCellData(int row, int col) {
    117         if (row <= 0 || col <= 0) {
    118             return null;
    119         }
    120         if (!flag) {
    121             this.getSheetData();
    122         }
    123         if (listData.size() >= row && listData.get(row - 1).size() >= col) {
    124             return listData.get(row - 1).get(col - 1);
    125         } else {
    126             return null;
    127         }
    128     }
    129 
    130     public String getCellData(int row, String headerName) {
    131         if (row <= 0) {
    132             return null;
    133         }
    134         if (!flag) {
    135             this.getSheetData();
    136         }
    137         if (mapData.size() >= row && mapData.get(row - 1).containsKey(headerName)) {
    138             return mapData.get(row - 1).get(headerName);
    139         } else {
    140             return null;
    141         }
    142     }
    143 
    144 
    145     public static void main(String[] args) {
    146         ExcelReader eh = new ExcelReader("C:\Users\ty\Documents\工作簿1.xlsx", "Sheet2");
    147         System.out.println(eh.getCellData(1, 1));
    148         // System.out.println(eh.getCellData(1, "test1"));
    149         System.out.println(eh.getCellData(1, 1));
    150         eh.getSheetData();
    151 
    152     }
    153 }
  • 相关阅读:
    sublime插件时间
    git与github
    字符编码笔记:ASCII,Unicode和UTF-8
    阮一峰:互联网协议入门
    从理论到实践,全方位认识DNS
    ci事务
    linux下启动oracle
    Java连接Oracle
    我的博客终于开通了,加油!
    FILTER 执行次数
  • 原文地址:https://www.cnblogs.com/linbo3168/p/6612758.html
Copyright © 2011-2022 走看看