转自http://blog.csdn.net/jack0511/article/details/6179593,仅供学习

/*** ClassName:ExcelReader.java* Author: wenbin.ji* CreateTime: Jan 28, 2011 11:16:29 AM* Description:Excel数据读取工具类,POI实现,兼容Excel2003,及Excel2007**/
package com.company.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;public class ExcelReader {Workbook wb = null;List<String[]> dataList = new ArrayList<String[]>(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<String[]>*/public List<String[]> 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){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;}}

POI读取Excel(兼容Excel2003、Excel2007)相关推荐

  1. Java开发小技巧(六):使用Apache POI读取Excel

    前言 在数据仓库中,ETL最基础的步骤就是从数据源抽取所需的数据,这里所说的数据源并非仅仅是指数据库,还包括excel.csv.xml等各种类型的数据接口文件,而这些文件中的数据不一定是结构化存储的, ...

  2. 记录使用poi读取excel文件

    最近有同事问到在Java程序中poi读取excel怎么做,虽然以前写过,但是最近没用到就差不多忘了,俗话说好记性不如烂笔头,趁现在有空,特此记录一下. 项目使用的是springBoot,首先添加依赖, ...

  3. POI读取excel。读取MultipartFile格式的excel文件

    POI读取excel文件 package com.learn;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.user ...

  4. poi xlsx转换html,POI 读取 Excel 转 HTML 支持 03xls 和 07xlsx 版本 包含样式

    /** * @功能描述 POI 读取 Excel 转 HTML 支持 03xls 和 07xlsx 版本 包含样式 * @author Devil 34 * @创建时间 2015/4/19 21:34 ...

  5. springboot使用POI读取excel数据

    MAVEN坐标如下: 便于复制: <!-- excel导出工具 --> <dependency><groupId>org.apache.poi</groupI ...

  6. poiexcel 读取引用列_java用poi读取Excel表格中的数据

    Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版. Apache POI ...

  7. java利用poi读取excel_java利用POI 读取EXCEL

    /* * 使用POI读取EXCEL文件 */ import java.io.File; import java.io.FileInputStream; import java.util.ArrayLi ...

  8. java通过poi读取excel中的日期类型数据或自定义类型日期

    java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的  12-十月-2019,而Excel中输入的是 2019/10/12 ...

  9. POI读取Excel内容格式化

    在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其 ...

最新文章

  1. 自己动手重新实现LINQ to Objects: 9 - SelectMany
  2. eclipse中搭建ssm框架
  3. 2020-2-15技术积累-时间插件-前端获取后端数据生成表格
  4. java验证码的实现
  5. 程序语言的奥妙:算法解读 ——读书笔记
  6. node --- 后端使用body-parse解析Post请求,前端使用axios发送Post请求
  7. 76. Minimum Window Substring
  8. HTML5类选择器使用,CSS选择器种类及使用方法
  9. JAVA学习笔记——JAVA基础语法(二)
  10. 机器学习的数学基础书籍
  11. ThinkPHP一键检测ThinkPHP漏洞,漏洞检测工具
  12. 华为荣耀开机停留在android,华为荣耀8变砖无法开机怎么办 华为荣耀8变砖无法开机解决方法...
  13. PHPMyWind编辑器支持Word导入
  14. win10 添加、修改右键菜单的Edit with IDLE
  15. matlab图像文件的格式
  16. 数据分析师必须掌握的常见数据分析方法
  17. 年薪30W的程序员,都在哪些平台兼职接私活?
  18. Ant Design Pro项目启动报错 ChunkError mf-va_remoteEntry umi
  19. 2023年全国最新会计专业技术资格精选真题及答案6
  20. NetFlow Analyzer-网络检测和响应

热门文章

  1. 微信小程序采坑三:输入框设置自动获取焦点后无法自动获取焦点
  2. 锁屏密码锁、图案锁忘记怎么办?简单利用adb删除(部分机型可用)
  3. 微云虚拟化VOS操作系统
  4. php 菜单模块,POSCMS模块菜单
  5. 路由器的配置,IP,NAT、DHCP
  6. 宝塔软件商店安装不了php_宝塔安装php不显示
  7. Windows 安装Docker碰到 cannot enable hyper-v service
  8. Android 自定义相机黑屏
  9. python-django(一)
  10. 为什么我们看到的DataFocus可视化大屏都是深蓝色的?