POI兼容2003,2007
来源:互联网 发布:美工工作室怎么赚钱 编辑:程序博客网 时间:2024/06/07 04:47
- /**
- * 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;
- }
- }
阅读全文
0 0
- POI兼容2003,2007
- java--poi 读取Excel 兼容2003/2007
- POI 解析Excel(兼容 2003,2007)
- POI读取excel2003兼容2007
- poi读取EXCEL工具,兼容2003以下和2007
- 《poi excel批量导入数据库 2003与2007兼容》使用说明
- struts:poi读取excel文件(兼容2003、2007)
- poi读Excel2003兼容2007总结
- poi读写Excel,兼容2007xlsx
- 使用POI导出excel,完美兼容2003及2007以上版本,购物车原理
- 通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)
- POI:支持xls/xlsx文件格式按cell类型解析相关内容(exls 2003/2007 兼容)
- java 采用apache poi处理excel文件兼容2003及2007
- 通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)
- Java上传Excel同时兼容2003和2007 解决read error和org.apache.poi.poifs.filesystem.OfficeXmlFileException异常
- JavaWeb一个完整的Servlet上传Excel表格使用poi解析至数据库实现(兼容2003,2007)。
- POI兼容XLSX和XLS
- POI使用:解析xls/xlsx文件(兼容office2003/2007/2010版本)
- 横竖屏切换时页面信息的处理流程及方法
- .9图报错
- Maven详解之仓库------本地仓库、远程仓库
- opencv----形态学运算:开运算、闭运算、顶帽、黑帽
- 判断数组中 是否有某个想要的元素
- POI兼容2003,2007
- 折半查找
- 新手村 数组 小鱼比可爱
- 7. Binder, AIDL, Messenger
- centos6.5系统用Python3.6.3安装pip
- 对象创建型模式 --- Abstract factory(抽象工厂)
- 新手村 数组 小鱼的数字游戏
- Spring,hibernate,struts2(SSH)项目在tomcat中多次reload时出现OutOfMemoryError:PermGen Space
- 【译】DeepLab V2:基于深度卷积网、孔洞算法和全连接CRFs的语义图像分割