Java读取xls, xlsx格式文件
maven配置:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.8</version>
</dependency>
package com.thinkive.common.util;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;
import com.thinkive.common.function.gastatisics.bean.ThirdBean;
/**
* @desc: 读取Excel数据,
* @author: changez@thinkive.com
* @time: 2016年11月28日 下午4:03:59
*/
public class ReadExcel {
private static Logger logger = Logger.getLogger(ReadExcel.class);
public static void readExcelAndInstallDB(String filePath, int ignoreRows) throws Exception {
Map<String, String> map = AnalyzeFileName.analyzeFileName(filePath);
String fileType = map.get("fileType");
InputStream stream = new FileInputStream(filePath);
// 获取Excel工作薄对象
Workbook wb = null;
if ("xls".equals(fileType)) {
wb = new HSSFWorkbook(stream);
} else if ("xlsx".equals(fileType)) {
wb = new XSSFWorkbook(stream);
} else {
stream.close();
logger.error("Excel文件格式错误!");
return ;
}
ignoreRows = ignoreRows < 0 ? 0 : ignoreRows;
List<ThirdBean> beanList = new ArrayList<ThirdBean>();
NumberFormat nf = NumberFormat.getInstance();
nf.setGroupingUsed(false); // 不使用科学型计数方式
try {
// 获取Excel工作薄表对象,下标从0开始,该对象存储表中的每行对象
// wb.getNumberOfSheets() 获取表的总数量
for (int k = 0; k < wb.getNumberOfSheets(); k++) {
Sheet sheet1 = wb.getSheetAt(k);
for (int i = ignoreRows; i <= sheet1.getLastRowNum(); i++) {
Row row = sheet1.getRow(i);//获取每行
if (row != null) {
String date = String.valueOf(nf.format(row.getCell(4).getNumericCellValue()));
String time = String.valueOf(nf.format(row.getCell(5).getNumericCellValue()));
String dateTime = time.length() > 5 ? date+time : date+"0"+time;
// 获取每行中不同下标的单元格,
String str = row.getCell(10).getStringCellValue().trim();
beanList.add(bean);
}
}
}
}finally {
if(stream != null) {
stream.close();
}
}
}
}