POI读取excel。读取MultipartFile格式的excel文件
POI读取excel文件
package com.learn;import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 读取excel工具类* <dependency>* <groupId>org.apache.poi</groupId>* <artifactId>poi-ooxml</artifactId>* <version>3.17</version>* </dependency>* <dependency>* <groupId>org.apache.poi</groupId>* <artifactId>poi</artifactId>* <version>3.17</version>* </dependency>*/
public class ReadExcel {public static List<Map<Integer, List<String>>> readExcel(MultipartFile file) {//存储excel所有sheet信息List<Map<Integer, List<String>>> totalList = new ArrayList<>();//获取文件流
// FileInputStream is = null;//创建工作簿Workbook workbook = null;try {
// is = new FileInputStream(file);
// workbook = new XSSFWorkbook(is);
// workbook = new XSSFWorkbook(file.getInputStream());//这是07版本的,不兼容03版本HSSFWorkbookworkbook = WorkbookFactory.create(file.getInputStream());//可兼容03、07版本//获取sheet数量int numberOfSheets = workbook.getNumberOfSheets();for (int i = 0; i < numberOfSheets; i++) {//存储单页sheet信息mapMap<Integer, List<String>> excelMap = new HashMap<>();//获取当前工作表Sheet sheet = workbook.getSheetAt(i);//获取表记录//获取行数 TODO 关于获取行数的方法好像有坑,可以查资料确定一下int numOfRows = sheet.getLastRowNum();for (int rowNum = 0; rowNum < numOfRows; rowNum++) {List<String> infoList = new ArrayList<>();Row rowData = sheet.getRow(rowNum);if (rowData != null) {//读取列int cellCount = rowData.getLastCellNum();for (int cellNum = 0; cellNum < cellCount; cellNum++) {Cell cell = rowData.getCell(cellNum);//匹配数据类型String cellValue = "";if (cell != null) {if (cell.getCellTypeEnum() == CellType.STRING) {cellValue = cell.getStringCellValue();}if (cell.getCellTypeEnum() == CellType.NUMERIC) {//数值型//poi读取整数会自动转化成小数,这里对整数进行还原,小数不做处理long longValue = Math.round(cell.getNumericCellValue());if (Double.parseDouble(longValue + ".0") == cell.getNumericCellValue()) {cellValue = String.valueOf(longValue);} else {cellValue = String.valueOf(cell.getNumericCellValue());}} else if (cell.getCellTypeEnum() == CellType.FORMULA) {//公式型//公式计算的值不会转化成小数,这里数值获取失败后会获取字符try {cellValue = String.valueOf(cell.getNumericCellValue());} catch (Exception e) {cellValue = cell.getStringCellValue();}}infoList.add(cellValue);}else {infoList.add(null);}excelMap.put(rowNum,infoList);}}}totalList.add(excelMap);}} catch (Exception e) {e.printStackTrace();} finally {try {if (workbook != null) {workbook.close();}
// if (is != null) {
// is.close();
// }} catch (IOException e) {e.printStackTrace();}}return totalList;}
}
POI读取excel。读取MultipartFile格式的excel文件相关推荐
- Android app 读取xls和xlsx格式的excel文件
在app开发中,有项功能 要求读取 Tv电视里面的xls 和 xlsx格式的excel文件 然后显示出来 所以需要poi-3.12-android-a.jar和poi-ooxml-schemas-3. ...
- Mac OS X将CSV格式转换为Excel文档格式,Excel转CSV中文乱码问题
一:在Mac上假设你使用Excel打开windows导出的CSV格式文档.你会发现表格中全部的的内容都显示在A列. 那么,怎样恢复正常呢,你能够将CSV格式的文档导入到Excel文档中,这样就正常显示 ...
- 超大数据量的xlsx格式的excel文件的读取和解析,解决了POI方式的内存溢出和性能问题
在之前的博文< POI读取并解析xlsx格式的excel文件>中,在小数据量的情况下是可以轻松愉快的处理的,但是当excel文件的数据量达到百万级的时候, InputStream is = ...
- excel 溢出 修复_修复Excel条件格式重复规则
excel 溢出 修复 Conditional formatting is a great way to highlight specific data, but did you know that ...
- java excel api_全面挖掘Java Excel API 使用方法
使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事.在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来 ...
- 【Android】使用poi读取、创建、另存Excel,支持xlsx和部分xls格式
在这里,我使用的poi是3.12版本的,它不是Apache官方poi包 下载jar包后,将其放进libs文件夹里面,选中两个jar包,鼠标右键点击add As library-添加为库,下载jar点击 ...
- Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据
Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据 一.资源 什么是Apache POI Apache POI 不同类型的数据的表格(xls) 链接: ...
- java excel读取操作,Java 操作 Excel (读取Excel2003 2007,Poi兑现)
Java 操作 Excel (读取Excel2003 2007,Poi实现) 一. Apache POI 简介( http://poi.apache.org/) 使用Java程序读写Microsoft ...
- 【Apache POI】Java 读取Excel文件
Excel内容如下: 封装Excel行列字段的Bean: public class Employee {private String name;private String gender;privat ...
最新文章
- c语言:婚礼上的谎言
- Rigidbody.Is Kinematic和碰撞体
- 多维数据查询效率分析(1)
- Transact SQL 常用语句以及函数
- X^2 Mod P(51Nod-1014)
- python读取多通道信号中的一个通道_RFID多通道读写器的具体应用
- 【javascript】 的严格模式 详解
- Python使用线性回归简单预测数据
- Mercurial:Hg检出的时候:The system cannot find the path specified
- iATKOS v7硬盘安装教程(硬盘助手+变色龙安装版)
- SSM项目源码基于ssm的NBA球队|篮球管理系统
- C++中---结构体变量的默认值以及构造函数的应用
- Redhat下小企鹅输入法的安装
- WEB-JSPELJSTL
- Eclipse WTP
- 【office 2007~office 2019】Excel日期选择控件插件安装
- 幸运童年童装 研发制造营销
- win10自动更新导致显卡驱动出问题,No AMD Graphics driver is installed or.......的解决方案
- python tkinter 实现简易秒表计时器
- MySQL-8.0 RESTART命令远程重启mysqld