multipartfile转excel_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> analysis(MultipartFile file) {
ArrayList> 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 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;
}
}
}
multipartfile转excel_MultipartFile解析Excel相关推荐
- POI文件导入:代码实现-解析Excel构造用户列表
用户实体类配置构造方法 public User(Object [] values) {//用户名 手机号 工号 聘用 形式 入职 时间 部门编码this.username = values[1].to ...
- ssh excel 导入 mysql_ssh poi解析excel并将数据存入数据库
做完了一个报表导入数据库 功能 遇到几个问题:一 .Poi解析excel 的两种格式 xls xlsx. 二.form表单上传使用ajax 三.excel 单元格中有公式存在普通的读取方式读到的是公式 ...
- 读取ppt并存入数据库_Java解析Excel文件并把数据存入数据库
前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...
- vue excel导入mysql详细教程_Vue前端上传EXCEL文件,后端(springBoot+MyBatis+MySQL)解析EXCEL并批量插入/更新数据库...
文章目录 Vue前端 后端 controller层 service层:如何解析Excel文件 MyBatis:实现批量插入 在mysql中设置唯一索引Unique Index MySQL中的inser ...
- POI解析Excel表格
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 这里实现poi解析Excel表格的例子,导入Exc ...
- SpringBoot 解析excel 使用easyexcel依赖 2.1.1版本
1. 引入easyexcel 依赖 <dependencies><dependency> <!-- 解析excel 依赖 使用 easyexcel 这个--> & ...
- 解析Excel获取单元格数据
今天自己写了一遍解析Excel的方法,虽然也是根据网上一些例子来写的,但是一边写一边在网上查找这些类.方法的含义及左右,感觉还是有所收获的.记录一下以后方便使用. private static fin ...
- springboot整合poi解析excel
1.poi的maven引入 <!-- poi导入导出 --><dependency><groupId>org.apache.poi</groupId>& ...
- XX健康:预约管理-预约设置日历插件文件简单下载Excel文件解析Excel表数据批量导入
1. 需求分析 前面我们已经完成了检查项管理.检查组管理.套餐管理等.接下来我们需要进行预约设置,其实就是设置每一天的体检预约最大数量.客户可以通过微信端在线预约,在线预约时需要选择体检的时间,如果客 ...
最新文章
- Python使用matplotlib可视化箱图、seaborn中的boxplot函数可视化分组箱图、在箱图中添加抖动数据点(Dot + Box Plot)
- Android加载大图、多图解决方案
- CSS 中的内联元素、块级元素以及display的各个属性的特点
- vue 子组件更新父组件状态 使用sync
- sqoop导出数据|Hive|HDFS和脚本编写
- efficientnet-yolo3-tf2的实现
- 深入了解vue中slot和slot-scope
- 3.MongoDB uri中包含特殊字符与读策略配置
- Periodic Call 1.0
- HTML静态网页作业——海贼王主题网页设计制作6个页面(HTML+CSS)
- Cross Compile libdnet and Python for Montavista/PowerPC
- JAVA 类和对象的实例
- RainMeter学习4
- Racket语言简单使用
- Java小程序--抓取emai
- php+日期周几,如何判断php一个日期是周几
- 为什么苹果手机通话的时候不能录音?
- 电脑合上盖子不锁屏_win10笔记本合上盖子不锁屏
- Dubbo:Dubbo服务发现
- python 隐函数作图(原创简单方法)