本文共 6667 字,大约阅读时间需要 22 分钟。
package com.taobao.util;/** * @Author TAO * @ClassName ExcelData * @Description TODO * @Date 2019/1/9 15:02 * @Version 1.0 */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.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.springframework.web.multipart.MultipartFile;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;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;/** * 解析excel 上传数据 */public class AnalysisExcelData { /** * @Author * @Description //TODO * @Date 2019/8/15 12:14 * @Param file :上传的excel文件 * @return * @param null */ public static List getExcelData(MultipartFile file) throws IOException { checkFile(file); //获得Workbook工作薄对象 Workbook workbook = getWorkBook(file); //创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回 List list = new ArrayList<>(); if (workbook != null) { for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { //获得当前sheet工作表 Sheet sheet = workbook.getSheetAt(sheetNum); if (sheet == null) { continue; } //获得当前sheet的开始行 int firstRowNum = sheet.getFirstRowNum(); //获得当前sheet的结束行 int lastRowNum = sheet.getLastRowNum(); //循环除了所有行,如果要循环除第一行以外的就firstRowNum+1 for (int rowNum = firstRowNum + 1; rowNum <= lastRowNum; rowNum++) { //获得当前行 Row row = sheet.getRow(rowNum); if (row == null) { continue; } //获得当前行的开始列 int firstCellNum = row.getFirstCellNum(); //获得当前行的列数 int lastCellNum = row.getLastCellNum(); if (lastCellNum > 0) { ArrayList
转载地址:http://hnjq.baihongyu.com/