博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POI读取Excel(兼容Excel2003、Excel2007)
阅读量:2352 次
发布时间:2019-05-10

本文共 4593 字,大约阅读时间需要 15 分钟。

文章来源:http://blog.csdn.net/jack0511/article/details/6179593

项目结构:

用到的excel文件student1.xlsx

具体代码实现:

package com.nepu.utils;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.apache.poi.ss.usermodel.FormulaEvaluator;import org.apache.poi.openxml4j.exceptions.InvalidFormatException;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.DateUtil;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;/**  * ClassName:ExcelReader.java  * Author: wenbin.ji  * CreateTime: Jan 28, 2011 11:16:29 AM  * Description:Excel数据读取工具类,POI实现,兼容Excel2003,及Excel2007  **/public class ExcelReader {	Workbook wb = null;	List
dataList = new ArrayList
(100); public ExcelReader(String path) { try { InputStream inp = new FileInputStream(path); wb = WorkbookFactory.create(inp); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (InvalidFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 取Excel所有数据,包含header * * @return List
*/ public List
getAllData(int sheetIndex) { int columnNum = 0; Sheet sheet = wb.getSheetAt(sheetIndex); if (sheet.getRow(0) != null) { columnNum = sheet.getRow(0).getLastCellNum() - sheet.getRow(0).getFirstCellNum(); } if (columnNum > 0) { for (Row row : sheet) { String[] singleRow = new String[columnNum]; int n = 0; for (int i = 0; i < columnNum; i++) { Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK); switch (cell.getCellType()) { case Cell.CELL_TYPE_BLANK: singleRow[n] = ""; break; case Cell.CELL_TYPE_BOOLEAN: singleRow[n] = Boolean.toString(cell .getBooleanCellValue()); break; // 数值 case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { singleRow[n] = String.valueOf(cell .getDateCellValue()); } else { cell.setCellType(Cell.CELL_TYPE_STRING); String temp = cell.getStringCellValue(); // 判断是否包含小数点,如果不含小数点,则以字符串读取,如果含小数点,则转换为Double类型的字符串 if (temp.indexOf(".") > -1) { singleRow[n] = String.valueOf(new Double(temp)) .trim(); } else { singleRow[n] = temp.trim(); } } break; case Cell.CELL_TYPE_STRING: singleRow[n] = cell.getStringCellValue().trim(); break; case Cell.CELL_TYPE_ERROR: singleRow[n] = ""; break; case Cell.CELL_TYPE_FORMULA: cell.setCellType(Cell.CELL_TYPE_STRING); singleRow[n] = cell.getStringCellValue(); if (singleRow[n] != null) { singleRow[n] = singleRow[n].replaceAll("#N/A", "") .trim(); } break; default: singleRow[n] = ""; break; } n++; } if ("".equals(singleRow[0])) { continue; }// 如果第一行为空,跳过 dataList.add(singleRow); } } return dataList; } /** * 返回Excel最大行index值,实际行数要加1 * * @return */ public int getRowNum(int sheetIndex) { Sheet sheet = wb.getSheetAt(sheetIndex); return sheet.getLastRowNum(); } /** * 返回数据的列数 * * @return */ public int getColumnNum(int sheetIndex) { Sheet sheet = wb.getSheetAt(sheetIndex); Row row = sheet.getRow(0); if (row != null && row.getLastCellNum() > 0) { return row.getLastCellNum(); } return 0; } /** * 获取某一行数据 * * @param rowIndex * 计数从0开始,rowIndex为0代表header行 * @return */ public String[] getRowData(int sheetIndex, int rowIndex) { //ghy2014-12-29: 注释掉的东东不知什么作用?// String[] dataArray = null;// if (rowIndex > this.getColumnNum(sheetIndex)) {// return dataArray;// } else {// dataArray = new String[this.getColumnNum(sheetIndex)]; return this.dataList.get(rowIndex);// } } /** * 获取某一列数据 * * @param colIndex * @return */ public String[] getColumnData(int sheetIndex, int colIndex) { String[] dataArray = null; if (colIndex > this.getColumnNum(sheetIndex)) { return dataArray; } else { if (this.dataList != null && this.dataList.size() > 0) { dataArray = new String[this.getRowNum(sheetIndex) + 1]; int index = 0; for (String[] rowData : dataList) { if (rowData != null) { dataArray[index] = rowData[colIndex]; index++; } } } } return dataArray; } public static void main(String[] args) { ExcelReader reader=new ExcelReader("student1.xlsx"); //读取excel中的所有数据第0张sheet List
list=reader.getAllData(1); for(int i=0;i

你可能感兴趣的文章
Tab Layout 之多个Activity实现
查看>>
FrameLayout之我见
查看>>
个人解读Activity之一
查看>>
实现自定义布局的Notification
查看>>
AlarmManager的学习与实现
查看>>
解读Content Provider之一
查看>>
解读Content Provider之二
查看>>
自定义UI实例
查看>>
推荐一个不错的自定义UI
查看>>
fedora16 设置 gedit软件的默认编码
查看>>
S3C6410 存储器映射
查看>>
Linux 3.3.0移植到S3C6410开发板上之一
查看>>
Busybox支持中文的解决办法
查看>>
Spring中BeanFactory和FactoryBean有什么区别?
查看>>
牛年(2021)的KPI
查看>>
快速识别图片类型
查看>>
理解云原生
查看>>
docker常见问题答疑
查看>>
mac最简配置maven
查看>>
虚拟机性能监控与故障处理工具
查看>>