java 读取Excel (利用poi,jxl插件)
来源:互联网 发布:数据库的英文缩写 编辑:程序博客网 时间:2024/05/22 12:49
这几天在工作当中由于遇到要把excel文件导入到项目,所以在参考了网上前辈们的资料后,自己动手写了一个符合自己要求的方法。项目中所需要的jar文件为:
xmlbeans-2.6.0.jar
poi-ooxml-3.13-20150929.jar
poi-3.13-20150929.jar
poi-ooxml-schemas-3.13-20150929.jar
jxl.jar
package com.util;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;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;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;/** * Excel工具类 * @author NO-1 * */public class ExcelUtil {/** * 使用jxl插件读取Excel(2003)文件 * @param fileurl 文件路径 * @return list<HashMap<String,String>> * map对象:第一行表头为key,从第三行开始单元内容为value */public static List<HashMap<String, String>> readExcelByJxl(String fileurl) {List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();HashMap<String, String> hm =null;try {//文件流InputStream is = new FileInputStream(fileurl);//获得Excel文档Workbook rwb = Workbook.getWorkbook(is);//获得工作区Sheetjxl.Sheet[] sheets=rwb.getSheets();//获得表头字段jxl.Cell[] cell0=sheets[0].getRow(0);for(int i=0;i<sheets.length;i++){Sheet sheet =sheets[i];//获得总行数int rowsNum=sheet.getRows();//遍历每行for(int j=2;j<rowsNum;j++){//创建HashMap对象,存放每行的数据hm = new HashMap<String, String>();jxl.Cell[] cells=sheet.getRow(j);for(int k=0;k<cells.length;k++){//遍历每行单元格jxl.Cell cell=cells[k];if(cell!=null){//获得单元格内容String value=cell.getContents();//存放到map中,表头为key,内容为valuehm.put(cell0[k].getContents(), value);}}//存放到list对象中(每行为一个map对象)list.add(hm);}}//关闭流is.close();rwb.close();} catch (BiffException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return list;}/** * * @param fileName * @return List<HashMap<String, String>> * @throws IOException * @throws FileNotFoundException */public static List<HashMap<String, String>> readExcel2007(String fileName) throws FileNotFoundException, IOException {List<HashMap<String,String>> list = new LinkedList<HashMap<String,String>>();// 构造 XSSFWorkbook 对象,strPath 传入文件路径XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(new File(fileName)));// 读取第一章表格内容XSSFSheet sheet = xwb.getSheetAt(0);XSSFRow row = null;XSSFCell cell = null;//获得总行数int counter = sheet.getPhysicalNumberOfRows();//获得第一行总列数(表头)row=sheet.getRow(0);int cellNum = row.getPhysicalNumberOfCells();String[] cells=new String[cellNum];//将表头存放到数组中,做为map中的key使用for(int i=0;i<cellNum;i++){cell=row.getCell(i);if(cell!=null){cell.setCellType(Cell.CELL_TYPE_STRING);cells[i]=cell.getStringCellValue();}}HashMap<String ,String> map=null;//遍历行for (int i = 0; i < counter; i++) {row = sheet.getRow(i);//遍历单元格map=new HashMap<String,String>();for (int j = 0; j < cellNum; j++) {cell = row.getCell(j);if (cell != null) {//设置单元格内容为String类型cell.setCellType(Cell.CELL_TYPE_STRING);String value = cell.getStringCellValue();//存放到map对象中,表头为key,单元格内容为valuemap.put(cells[j], value);//System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列="+ value);}}list.add(map);}//关闭流xwb.close();return list;}/** * * @param fileName * @return List<HashMap<String, String>>() * @throws FileNotFoundException * @throws IOException */public static List<HashMap<String, String>> readExcel2003(String fileName) throws FileNotFoundException, IOException {List<HashMap<String,String>> list = new LinkedList<HashMap<String,String>>();// 构造 XSSFWorkbook 对象,strPath 传入文件路径HSSFWorkbook xls = new HSSFWorkbook(new FileInputStream(new File(fileName)));// 读取第一章表格内容HSSFSheet sheet = xls.getSheetAt(0);HSSFRow row = null;HSSFCell cell = null;//获得总行数int counter = sheet.getPhysicalNumberOfRows();//获得第一行总列数(表头)row=sheet.getRow(0);int cellNum = row.getPhysicalNumberOfCells();String[] cells=new String[cellNum];//将表头存放到数组中,做为map中的key使用for(int i=0;i<cellNum;i++){cell=row.getCell(i);if(cell!=null){cell.setCellType(Cell.CELL_TYPE_STRING);cells[i]=cell.getStringCellValue();}}HashMap<String ,String> map=null;//遍历行for (int i = 0; i < counter; i++) {row = sheet.getRow(i);//遍历单元格map=new HashMap<String,String>();for (int j = 0; j < cellNum; j++) {cell = row.getCell(j);if (cell != null) {//设置单元格内容为String类型cell.setCellType(Cell.CELL_TYPE_STRING);String value = cell.getStringCellValue();//存放到map对象中,表头为key,单元格内容为valuemap.put(cells[j], value);//System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列="+ value);}}list.add(map);}//关闭流xls.close();return list;}/** * 解析Excel文件,2003和2007都可以 * @param fileName * @return List<HashMap<String, String>>() * @throws FileNotFoundException * @throws IOException */public static List<HashMap<String, String>> readExcel(String fileName) throws FileNotFoundException, IOException{if(fileName==null||fileName.length()==0){return new ArrayList<HashMap<String, String>>();}if(fileName.endsWith(".xls")){return readExcel2003(fileName);}else if(fileName.endsWith(".xlsx")){return readExcel2007(fileName);}else{return new ArrayList<HashMap<String, String>>();}}}
0 0
- java 读取Excel (利用poi,jxl插件)
- java利用poi读取excel
- java利用poi读取excel
- java利用poi读取excel
- JAVA利用jxl读取Excel内容
- JAVA利用jxl读取Excel内容
- JAVA利用jxl读取Excel内容
- android 读取excel POI JXL
- poi,jxl读取excel文件
- jxl读取excel(java)
- Java模块 -- 读取Excel文件写入数据库 Mybatis , POI , JXL
- JAVA读取Excel的实现(利用jxl.jar读取excel)
- JAVA利用Apache Poi读取Excel文件
- java利用poi读取excel中数据
- Java利用POI读取Excel表格
- java jxl读取excel
- java jxl 读取excel
- 利用POI读取excel
- 最长上升连续子序列 II
- 第一次找工作的辛酸泪史,共勉。
- 用Spring+Hibernate做项目时候遇到 java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit
- DBCP连接池的使用小结
- aaxspring
- java 读取Excel (利用poi,jxl插件)
- 文章标题
- 模板方法模式
- 天地融面试题
- 模板方法模式深度解析(一)
- Java Arrays.sort源代码解析
- 模板方法模式深度解析(二)
- CSDN,你好!
- HTML结构