-
大小: 10KB文件類型: .java金幣: 1下載: 0 次發(fā)布日期: 2021-05-12
- 語言: Java
- 標(biāo)簽: excel導(dǎo)入??多個sheet??
資源簡介
此文件為多個sheet的excel導(dǎo)入,可以根據(jù)文件后綴,自動適應(yīng)上傳文件的版本,返回為list或者map,支持2003 版本以及2007版本的excel
代碼片段和文件信息
package?com.ca.ranyou.util;
import?java.io.FileInputStream;
import?java.io.InputStream;
import?java.text.DecimalFormat;
import?java.text.SimpleDateFormat;
import?java.util.ArrayList;
import?java.util.Date;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
import?org.apache.poi.hssf.usermodel.HSSFCell;
import?org.apache.poi.hssf.usermodel.HSSFDataFormat;
import?org.apache.poi.hssf.usermodel.HSSFDateUtil;
import?org.apache.poi.hssf.usermodel.HSSFWorkbook;
import?org.apache.poi.ss.usermodel.Cell;
import?org.apache.poi.ss.usermodel.Cellstyle;
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.xssf.usermodel.XSSFWorkbook;
/**
?*?excel導(dǎo)入
?*?@author?Liuhw
?*
?*/
public?class?ImportExcelUtil?{
private?final?static?String?Excel_2003?=?“.xls“;?//2003?版本的excel
private?final?static?String?Excel_2007?=?“.xlsx“;?//2007?版本的excel
/**
?*?返回list
?*?@param?fis
?*?@param?fileName
?*?@return
?*?@throws?Exception
?*/
public?Listject>>?getBankListByExcel(InputStream?fis?String?fileName)?throws?Exception{
//創(chuàng)建Excel工作簿
Workbook?work?=?this.getWorkbook(fis?fileName);
if(work?==?null)?{
throw?new?Exception(“創(chuàng)建Excel工作簿為空!“);
}
Sheet?sheet?=?null;
Row?row?=?null;
Cell?cell?=?null;
Listject>>?list?=?new?ArrayListject>>();
// Map>>?dataMap?=?new?HashMap>>();
int?sheetCount?=?0;
sheetCount?=?work.getNumberOfSheets();
//遍歷Excel中的所有sheet
for(int?i?=?0;?i //如果Excel就一頁一個sheet則i=0
if(i==0){
sheet?=?work.getSheetAt(i);
?String?sheetName?=?sheet.getSheetName();
?System.out.println(sheetName);
if(sheet?==?null)?{continue;}
//遍歷當(dāng)前sheet中的所有行
//int?totalRow?=?sheet.getPhysicalNumberOfRows();//如果excel有格式,這種方式取值不準(zhǔn)確
int?totalRow?=?sheet.getPhysicalNumberOfRows();
for(int?j?=?sheet.getFirstRowNum();?j row?=?sheet.getRow(j);
if(!isRowEmpty(row))?{
System.out.println(“=“);
//if(row?!=?null?&&?!““.equals(row))?{
//獲取第一個單元格的數(shù)據(jù)是否存在
Cell?fristCell=row.getCell(0);
if(fristCell!=null){
//遍歷所有的列
Listject>?li?=?new?ArrayListject>();
int?totalColum?=?row.getLastCellNum();
for(int?y?=?row.getFirstCellNum();?y cell?=?row.getCell(y);
cell.setCellType(Cell.CELL_TYPE_STRING);
String?value?=?cell.getStringCellValue();
?li.add(cell);
}
list.add(li);
}
?
}else?if(isRowEmpty(row)){
continue;
}
}
}else{
//如果是第二頁sheet要從第二行遍歷數(shù)據(jù)去掉標(biāo)題行即i>0
sheet?=?work.getSheetAt(i);
?String?sheetName?=?sheet.getSheetName();
?System.out.println(sheetName
評論
共有 條評論