栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java使用poi包读取Excel文档代码分享

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java使用poi包读取Excel文档代码分享

项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得:

1、maven项目需加入如下依赖:


    org.apache.poi
    poi
    3.10-FINAL
  
  
    org.apache.poi
    poi-ooxml
    3.10-FINAL
  

直接上测试类,类里有完善的注释:

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> result = new ExcelUtil().readXls(path);
      System.out.println(result.size());
      for (int i = 0; i < result.size(); i++) {
 List model = result.get(i);
 System.out.println("orderNum:" + model.get(0) + "--> orderAmount:" + model.get(1));
      }

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  
  private List> readXls(String path) throws Exception {
    InputStream is = new FileInputStream(path);
    // HSSFWorkbook 标识整个excel
    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
    List> result = new ArrayList>();
    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 rowList = new ArrayList();
 // 遍历改行,获取处理每个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;
  }

  
  private List> readXlsx(String path) throws Exception {
    InputStream is = new FileInputStream(path);
    XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
    List> result = new ArrayList>();
    // 循环每一页,并处理当前循环页
    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 rowList = new ArrayList();
 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;
  }

  // 存在的问题
  
  

  
  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文档代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/142809.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号