java读取excel插件_java 讀取Excel (利用poi,jxl插件)

這幾天在工作當中由於遇到要把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>

* map對象:第一行表頭為key,從第三行開始單元內容為value

*/

public static List> readExcelByJxl(String fileurl) {

List> list = new ArrayList>();

HashMap hm =null;

try {

//文件流

InputStream is = new FileInputStream(fileurl);

//獲得Excel文檔

Workbook rwb = Workbook.getWorkbook(is);

//獲得工作區Sheet

jxl.Sheet[] sheets=rwb.getSheets();

//獲得表頭字段

jxl.Cell[] cell0=sheets[0].getRow(0);

for(int i=0;i

Sheet sheet =sheets[i];

//獲得總行數

int rowsNum=sheet.getRows();

//遍歷每行

for(int j=2;j

//創建HashMap對象,存放每行的數據

hm = new HashMap();

jxl.Cell[] cells=sheet.getRow(j);

for(int k=0;k

//遍歷每行單元格

jxl.Cell cell=cells[k];

if(cell!=null){

//獲得單元格內容

String value=cell.getContents();

//存放到map中,表頭為key,內容為value

hm.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>

* @throws IOException

* @throws FileNotFoundException

*/

public static List> readExcel2007(String fileName) throws FileNotFoundException, IOException {

List> list = new LinkedList>();

// 構造 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

cell=row.getCell(i);

if(cell!=null){

cell.setCellType(Cell.CELL_TYPE_STRING);

cells[i]=cell.getStringCellValue();

}

}

HashMap map=null;

//遍歷行

for (int i = 0; i < counter; i++) {

row = sheet.getRow(i);

//遍歷單元格

map=new HashMap();

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,單元格內容為value

map.put(cells[j], value);

//System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列="+ value);

}

}

list.add(map);

}

//關閉流

xwb.close();

return list;

}

/**

*

* @param fileName

* @return List>()

* @throws FileNotFoundException

* @throws IOException

*/

public static List> readExcel2003(String fileName) throws FileNotFoundException, IOException {

List> list = new LinkedList>();

// 構造 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

cell=row.getCell(i);

if(cell!=null){

cell.setCellType(Cell.CELL_TYPE_STRING);

cells[i]=cell.getStringCellValue();

}

}

HashMap map=null;

//遍歷行

for (int i = 0; i < counter; i++) {

row = sheet.getRow(i);

//遍歷單元格

map=new HashMap();

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,單元格內容為value

map.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>()

* @throws FileNotFoundException

* @throws IOException

*/

public static List> readExcel(String fileName) throws FileNotFoundException, IOException{

if(fileName==null||fileName.length()==0){

return new ArrayList>();

}

if(fileName.endsWith(".xls")){

return readExcel2003(fileName);

}else if(fileName.endsWith(".xlsx")){

return readExcel2007(fileName);

}else{

return new ArrayList>();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值