記錄poi解析excell
依賴:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
代碼:
import com.ctrip.basebiz.api.utis.Constant;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
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 java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PoiUtils {
public static void main(String[] args) {
File file = new File("C:\\Users\\lenovo\\Desktop\\demo.xlsx");
if (!file.exists())
return;
FileInputStream fis = null;
Workbook workBook = null; // 使用XSSFWorkbook
try {
fis = new FileInputStream(file);
if (file.getName().contains(".xlsx"))
workBook = new XSSFWorkbook(fis);
else
workBook = new HSSFWorkbook(fis, true);
Map<Integer, List<String>> map = dealWorkBook(workBook);
map.forEach((k, v) -> System.out.println(v));
} catch (Exception e) {
// 处理异常
} finally {
try {
if (fis != null)
fis.close();
if (workBook != null)
workBook.close();
} catch (Exception e) {
// 处理异常
}
}
}
public static Map<Integer, List<String>> dealWorkBook(Workbook workBook) {
DecimalFormat df = new DecimalFormat("0");// 格式化 String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
Sheet sheet = workBook.getSheetAt(0); // 获取第一个sheet
Map<Integer, List<String>> map = new HashMap<Integer, List<String>>(); //第一个参数表示行数 第二个List保存该行的cell数据
int i = 0;
for (Row row : sheet) {
if (row.getRowNum() == Constant.ZERO.intValue())
continue;
map.put(i, new ArrayList<String>());
for (Cell cell : row) { // 遍历当前行的所有cell
switch (cell.getCellType()) {
case STRING:
map.get(i).add(cell.getRichStringCellValue().getString()); // 如果是字符串则保存
break;
case _NONE:
break;
case NUMERIC:
if ("@".equals(cell.getCellStyle().getDataFormatString())) {
map.get(i).add(df.format(cell.getNumericCellValue()));
} else if ("General".equals(cell.getCellStyle().getDataFormatString())) {
map.get(i).add(nf.format(cell.getNumericCellValue()));
} else {
map.get(i).add(sdf.format(cell.getDateCellValue()));
}
break;
case BOOLEAN:
break;
case FORMULA:
break;
case BLANK:
break;
case ERROR:
break;
}
}
i++;
}
return map;
}
}