POI读取Excel(兼容Excel2003、Excel2007)
转自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)相关推荐
- Java开发小技巧(六):使用Apache POI读取Excel
前言 在数据仓库中,ETL最基础的步骤就是从数据源抽取所需的数据,这里所说的数据源并非仅仅是指数据库,还包括excel.csv.xml等各种类型的数据接口文件,而这些文件中的数据不一定是结构化存储的, ...
- 记录使用poi读取excel文件
最近有同事问到在Java程序中poi读取excel怎么做,虽然以前写过,但是最近没用到就差不多忘了,俗话说好记性不如烂笔头,趁现在有空,特此记录一下. 项目使用的是springBoot,首先添加依赖, ...
- POI读取excel。读取MultipartFile格式的excel文件
POI读取excel文件 package com.learn;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.user ...
- poi xlsx转换html,POI 读取 Excel 转 HTML 支持 03xls 和 07xlsx 版本 包含样式
/** * @功能描述 POI 读取 Excel 转 HTML 支持 03xls 和 07xlsx 版本 包含样式 * @author Devil 34 * @创建时间 2015/4/19 21:34 ...
- springboot使用POI读取excel数据
MAVEN坐标如下: 便于复制: <!-- excel导出工具 --> <dependency><groupId>org.apache.poi</groupI ...
- poiexcel 读取引用列_java用poi读取Excel表格中的数据
Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版. Apache POI ...
- java利用poi读取excel_java利用POI 读取EXCEL
/* * 使用POI读取EXCEL文件 */ import java.io.File; import java.io.FileInputStream; import java.util.ArrayLi ...
- java通过poi读取excel中的日期类型数据或自定义类型日期
java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2019,而Excel中输入的是 2019/10/12 ...
- POI读取Excel内容格式化
在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其 ...
最新文章
- 自己动手重新实现LINQ to Objects: 9 - SelectMany
- eclipse中搭建ssm框架
- 2020-2-15技术积累-时间插件-前端获取后端数据生成表格
- java验证码的实现
- 程序语言的奥妙:算法解读 ——读书笔记
- node --- 后端使用body-parse解析Post请求,前端使用axios发送Post请求
- 76. Minimum Window Substring
- HTML5类选择器使用,CSS选择器种类及使用方法
- JAVA学习笔记——JAVA基础语法(二)
- 机器学习的数学基础书籍
- ThinkPHP一键检测ThinkPHP漏洞,漏洞检测工具
- 华为荣耀开机停留在android,华为荣耀8变砖无法开机怎么办 华为荣耀8变砖无法开机解决方法...
- PHPMyWind编辑器支持Word导入
- win10 添加、修改右键菜单的Edit with IDLE
- matlab图像文件的格式
- 数据分析师必须掌握的常见数据分析方法
- 年薪30W的程序员,都在哪些平台兼职接私活?
- Ant Design Pro项目启动报错 ChunkError mf-va_remoteEntry umi
- 2023年全国最新会计专业技术资格精选真题及答案6
- NetFlow Analyzer-网络检测和响应