zoukankan      html  css  js  c++  java
  • MultipartFile解析Excel

    被要求解析上传的excel实现批量修改,网上找个工具类 根据自己的要求 改了改

    前端部分

    var formData = new FormData();
    formData.append("files", overallSituation.files[0]);

    $.ajax({
    url: "fms/******/upload*******File",
    data: formData,
    type: "POST",
    // dataType: "json",
    cache: false, //上传文件无需缓存
    processData: false, //用于对data参数进行序列化处理 这里必须false
    contentType: false, //必须
    success: function (data) {

    if(data=="null"){
    Message.info("文件有误!");
    }else if(data=="false"){
    Message.info("出现异常!");
    }else{
    Message.info("成功修改数据"+data+"条!");
    panelVm.close();
    }

    }
    });

    // controller 具体的 就不写了  

    @RequestMapping(value="/*****",method = RequestMethod.POST)
    @ResponseBody
    public String *****(@RequestParam("files") MultipartFile files) throws IOException{

    return setFile(files);
    }

    // 工具类  把MultipartFile 这个对象解析成 List


    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 org.springframework.web.multipart.MultipartFile;
    import java.io.*;
    import java.util.ArrayList;
    /**
    *
    * @author   *****
    * @Date 2020-11-03 10:30
    */
    public class ExcleAnalysisUtil {
    public ExcleAnalysisUtil() {
    throw new Error("工具类不允许实例化!");
    }
    /**
    * 获取并解析excel文件,返回一个二维集合
    * @param file 上传的文件
    * @return 二维集合(第一重集合为行,第二重集合为列,每一行包含该行的列集合,列集合包含该行的全部单元格的值)
    */
    public static ArrayList<ArrayList<String>> analysis(MultipartFile file) {
    ArrayList<ArrayList<String>> row = new ArrayList<>();
    //获取文件名称
    String fileName = file.getOriginalFilename();
    System.out.println(fileName);

    try {
    //获取输入流
    InputStream in = file.getInputStream();
    //判断excel版本
    Workbook workbook = null;
    if (judegExcelEdition(fileName)) {
    workbook = new XSSFWorkbook(in);
    } else {
    workbook = new HSSFWorkbook(in);
    }

    //获取第一张工作表
    Sheet sheet = workbook.getSheetAt(0);
    //从第二行开始获取 getLastRowNum
    System.out.println(sheet.getLastRowNum());
    System.out.println(sheet.getPhysicalNumberOfRows());
    for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {
    //循环获取工作表的每一行
    Row sheetRow = sheet.getRow(i);
    //循环获取每一列
    ArrayList<String> cell = new ArrayList<>();
    for (int j = 0; j < sheetRow.getPhysicalNumberOfCells(); j++) {   //
    //将每一个单元格的值装入列集合
    sheetRow.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
    cell.add(sheetRow.getCell(j).getStringCellValue());
    }
    //将装有每一列的集合装入大集合
    row.add(cell);

    //关闭资源
    workbook.close();
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    System.out.println("===================未找到文件======================");
    } catch (IOException e) {
    e.printStackTrace();
    System.out.println("===================上传失败======================");
    }
    return row;
    }
    /**
    * 判断上传的excel文件版本(xls为2003,xlsx为2017)
    * @param fileName 文件路径
    * @return excel2007及以上版本返回true,excel2007以下版本返回false
    */
    private static boolean judegExcelEdition(String fileName){
    if (fileName.matches("^.+\.(?i)(xls)$")){
    return false;
    }else {
    return true;
    }
    }
    }

  • 相关阅读:
    VisualSVN-Server windows 版安装时报错 "Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details."
    Pytest 单元测试框架之初始化和清除环境
    Pytest 单元测试框架入门
    Python(email 邮件收发)
    Python(minidom 模块)
    Python(csv 模块)
    禅道简介
    2020年最好的WooCommerce主题
    Shopify网上开店教程(2020版)
    WooCommerce VS Magento 2020:哪个跨境电商自建站软件更好?
  • 原文地址:https://www.cnblogs.com/Mr-Y1907/p/13919970.html
Copyright © 2011-2022 走看看