上传解析Excel

Java | 解析Excel 实现批量上传 Java解析Excel 实现批量上传 @RequestMapping(value = "/importWorkRecordsExcel") @ResponseBody public String upload(HttpServletRequest request, HttpServletResponse response) throws Exception { SerParameter serParameter = new SerParameter(); Map<String, Objec 阅读详情

前言

项目中上传解析Excel的功能,非常普遍,因为方便,接下来就写一个工具类对Excel进行解析

具体方案

引入poi 阿帕奇依赖

官网搜素一个

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

工具类的书写
public class ExcelUtils {

    private final static Logger logger = LoggerFactory.getLogger(ExcelUtils.class);

    // 文件类型 后缀
    public static final String EXCEL_2003_SUFFIX = ".xls";
    public static final String EXCEL_2007_SUFFIX = ".xlsx";


    /**
     * @Descriptioin: 读取Excel转换为内存中的List,方便校验
     *  Todo:非常抱歉这个传参有误使用下面的方法
     * @param fileName
     * @return
     
    private static List<Object[]> readExcelToList(String fileName) {
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        InputStream inputStream;
        try {
            inputStream = new FileInputStream(new File(fileName));
            if(EXCEL_2003_SUFFIX.equalsIgnoreCase(suffixName)){
                return readOld(inputStream);
            }else if(EXCEL_2007_SUFFIX.equalsIgnoreCase(suffixName)){
                return readNew(inputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
      return new ArrayList<Object[]>();
    }
*/


   /**
     * @Descriptioin: 读取Excel转换为内存中的List,方便校验
     *    本方法是修改后的,可放心使用
     * @param fileName
     * @return
     */
    private static List<Object[]> readExcelToList(MultipartFile file) {
        String fileName = file.getOriginalFilename();
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        InputStream inputStream;
        try {
            inputStream = new FileInputStream(new File(fileName));
            if(EXCEL_2003_SUFFIX.equalsIgnoreCase(suffixName)){
                return readOld(inputStream);
            }else if(EXCEL_2007_SUFFIX.equalsIgnoreCase(suffixName)){
                return readNew(inputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
      return new ArrayList<Object[]>();
    }


    /**
    * List<Object[]> 返回的是不包含excel标题头 纯数据的集合
    */
    public static List<Object[]>  readOld(InputStream inputStream) throws IOException {
        HSSFWorkbook  hssfWorkbook = null;
        List<Object[]> list = new ArrayList<Object[]>();
        try {
            hssfWorkbook = new HSSFWorkbook(inputStream);
            HSSFSheet xssfSheet = hssfWorkbook.getSheetAt(0);
            HSSFRow hssfRow = null;
            HSSFCell hssfCell = null;
            Object cellValue = null;
                for(int i=1 ; i<= xssfSheet.getPhysicalNumberOfRows();i++){
                    hssfRow = xssfSheet.getRow(i);
                    if (null == hssfRow){
                        continue;
                    }
                    Object[] values = new Object[xssfSheet.getRow(0).getLastCellNum()];
                    for(int j=0; j<=hssfRow.getLastCellNum();j++){
                        hssfCell = hssfRow.getCell(j);
                        if(null == hssfCell){
                            continue;
                        }
                        switch (hssfCell.getCellType()) {
                            case Cell.CELL_TYPE_STRING:
                                cellValue = hssfCell.getStringCellValue();
                                break;
                            case Cell.CELL_TYPE_NUMERIC:
                                if(DateUtil.isCellDateFormatted(hssfCell)){
                                    cellValue = DateUtil.getJavaDate(hssfCell.getNumericCellValue());
                                    break;
                                }else{
                                    cellValue = NumberToTextConverter.toText(hssfCell.getNumericCellValue());
                                    break;
                                }
                            case Cell.CELL_TYPE_FORMULA:
                                cellValue = hssfCell.getCellFormula();
                                break;
                            case Cell.CELL_TYPE_BOOLEAN:
                                 cellValue = hssfCell.getBooleanCellValue();
                                 break;
                            case Cell.CELL_TYPE_BLANK:
                                cellValue = "";
                                break;
                            default:
                                cellValue = cellValue.toString();
                        }
                        values[j] = cellValue;
                    }
                    list.add(values);
                }
                return list;
        } catch (IOException e) {
            logger.error("文件格式有误,请检查:{}",e);
            return null;
        }finally {
            if(null != inputStream) inputStream.close();

            if(null !=hssfWorkbook) hssfWorkbook.close();

        }
    }

  /**
    * List<Object[]> 返回的是不包含excel标题头 纯数据的集合
    */
    public static List<Object[]> readNew(InputStream inputStream) throws IOException {
        XSSFWorkbook  xssfWorkbook = null;
        List<Object[]> list = new ArrayList<Object[]>();
        try {
            xssfWorkbook = new XSSFWorkbook(inputStream);
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
            XSSFRow xssfRow = null;
            XSSFCell xssfCell = null;
            Object cellValue = null;
                for(int i=1 ; i<= xssfSheet.getPhysicalNumberOfRows();i++){
                    xssfRow = xssfSheet.getRow(i);
                    if (null == xssfRow){
                        continue;
                    }

                    Object[] values = new Object[xssfSheet.getRow(0).getLastCellNum()];
                    for(int j=0; j<=xssfRow.getLastCellNum();j++){
                        xssfCell = xssfRow.getCell(j);
                        if(null == xssfCell){
                            continue;
                        }
                        switch (xssfCell.getCellType()) {
                            case Cell.CELL_TYPE_STRING:
                                cellValue = xssfCell.getStringCellValue();
                                break;
                            case Cell.CELL_TYPE_NUMERIC:
                                if(DateUtil.isCellDateFormatted(xssfCell)){

                                    cellValue = DateUtil.getJavaDate(xssfCell.getNumericCellValue());
                                    break;
                                }else{
                                    cellValue = NumberToTextConverter.toText(xssfCell.getNumericCellValue());
                                    break;
                                }
                            case Cell.CELL_TYPE_BOOLEAN:
                                cellValue = xssfCell.getBooleanCellValue();
                                break;
                            case Cell.CELL_TYPE_FORMULA:
                                cellValue = xssfCell.getCellFormula();
                                break;
                            case Cell.CELL_TYPE_BLANK:
                                cellValue = "";
                                break;
                            default:
                                cellValue = cellValue.toString();
                        }
                        values[j] = cellValue;
                    }
                    list.add(values);
                }
            return list;
        } catch (IOException e) {
            logger.error("文件格式有误,请检查:{}",e);
            return null;
        }finally {
            if(null != inputStream) inputStream.close();
            if(null !=xssfWorkbook) xssfWorkbook.close();
        }
    }

}

ajax上传Excel文件,解析为List,获取文件内容 需求 需求分析 现有批量上传的需求,通过上传Excel文件,获取用户uidList 流程分析页面Excel文件输入框 批量文件: 输入框事件 //上传 excel文件 function importExcel(formData) { $.ajax({ url: "lehai/giveMeda 阅读详情

相关推荐

node.js上传并解析Excel文件

2016-09-21 今天写的 这个小实例,一般是用在有很多数据进行添加 的时候。还是一个小前端,但是无奈于boss的压力,只能自己写接口,学nodejs mongodb 各种不懂[ 微笑脸 ] 因为今天的内容中用到了-xlsx moment csv 等 下载一般就是用bower/npm来的 so …写之前要先添加依赖文件 , XLSX = require('xlsx') ,

Irmhy 3811

IDEA中使用POI生成、读取xlsx文件(详细教程版)

导航一、有关POi的jar包导入二、生成Excel文件三、读取Excel文件 一、有关POi的jar包导入 如下图所示,IDEA本身集成的有Maven,使用自带的Maven直接下载jar即可 使用poi,需导入必要的jar,具体方法如下: 打开File --> Project Structure -->Libraries,然后点击“+”号 选择第二项“from Maven…” 在搜索框中查询图中的三个包并下载,①apache.poi ②apache.poi.examples ③apach

qq_49429996的博客 9249

ssh 导入导出excel+百度富文本编辑器+highcharts

这个一个比较完整的ssh整合后实现导入导出excel、百度富文本编辑器使用、highcharts统计图表应用、clob大对象处理等综合性、实用性比较强的案例代码实现

js node.js读取excel文件返回为json文本

//读取excel文件 只实用于node 服务器端读取本地xls/xlsx的文件 /*此方法为 Adobe photoshop的 CEP 提供了自己的 API 来方便进行读写操作,实际上和使用 Node.js 的 fs 没有什么区别,不过 CEP 的接口的方法都是同步的,更容易理解。CEP 文件操作的方法放在 window.cep.fs 对象中。*/ /*1、选用readFile读取本地excel文件,但必须读取文件的编码设置为"Base64"(字符文件、二进制文件(txt/ini等)用"UTF-8"编.

cyj51060的专栏 849

保姆级教程:在Ubuntu 22.04上从零安装SUMO并运行第一个交通仿真

本教程详细介绍了在Ubuntu 22.04系统上从零安装SUMO交通仿真软件并运行第一个仿真的完整流程。涵盖环境准备、PPA源安装、核心组件验证、首次仿真案例运行以及进阶配置技巧,特别针对netedit路网编辑器和地图格式转换等实用工具进行重点讲解,帮助用户快速掌握SUMO在交通仿真领域的应用。

weixin_30546189的博客 423

智能车八邻域图像算法_二

智能车八邻域图像算法 文章目录智能车八邻域图像算法前言一、一些想法二、生长方向的使用1.点的生长方向的表示2. 用点的生长方向来做初步判断1.引入库2.读入数据总结 前言 上一篇里面讲过用八邻域来获得赛道边界:智能车八邻域图像算法 当已经能稳定获得赛道边界时,就可以进行元素识别,获得偏差了。 这里就介绍一下我的一些思路。 早在前两年,优快云上就有一篇关于八邻域如何处理元素的文章第十五届全国大学生智能汽车竞赛-双车组三轮图像处理总结,写得很好,我当时也参考了这篇文章,但是我觉得不是很详细,所以我这里想写得

技术缝合怪的博客 1万+

eazyexcel生成校验单元格内容的excel文件

****/@Override// 隐藏字典页i++) {// 显示下拉箭头// 显示错误弹出框validation.createErrorBox("数据错误", "您输入的内容,不符合限制条件。");// validation.createPromptBox("XXX","请选择下拉项中的字典值");// 选择下拉项后是否允许清除单元格。

周六放风筝的专栏 734

Idea中使用Hutool工具类进行Excel文件读取

Excel操作工具封装读取Excel内容的封装,通过构造ExcelReader对象,指定被读取的Excel文件、流或工作簿,然后调用readXXX方法读取内容为指定格式。在标准的ExcelReader中,如果数据量较大,读取Excel会非常缓慢,并有可能造成内存溢出。因此针对大数据量的Excel,Hutool封装了event模式的读取方式。Excel03SaxReader只支持Excel2003格式的Sax读取。首先我们实现一下RowHandler。

m0_51666421的博客 9865

第四届“网鼎杯”网络安全大赛 - 青龙组

第四届“网鼎杯”网络安全大赛 - 青龙组

lpppp小公主的博客 1315

北航机器学习期末考试试题2020年春

北航机器学习期末考试试题2020春 看csdn上试题收费,积分还挺高,本着共享的理念,把2020春季ML考试的试题公开,若侵权,立删 前8道题10分,第9题20分 决策树采用ID3算法 对宇宙星球是否适合生存分类 SVM的原理;软间隔、硬间隔;以及对非线性样本点分类 集成学习的原理,以及及串行boosting以及bagging的简单概括 K-means与混合高斯模型的异同以及EM算法的原理,如何计算 马尔可夫随机场最大团;马尔可夫随机场的联合概率分布(势函数表示),贝叶斯网络联合概率分布 PCA主成分基于

qq_43343919的博客 5419

Java上传资源excel文件并进行解析

以上步骤展示了如何在Spring Boot中实现Excel文件的上传和解析。通过使用Spring的文件上传功能和Apache POI库,你可以轻松处理Excel文件,并将其内容解析成所需的数据结构。根据实际需求,你可以进一步扩展和优化这个示例。controller层代码事例:/*** 上传资源excel文件并进行解析* @return*/returnMap.put("message", "对不起,您设置的供应商无效!");

jakeswang的博客 1万+

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

天天酷科研的博客 1114

SpringMVC上传、解析Excel

示例:导入相关数据(Excel文件),相关的文件数据编辑好。XML文件配置    再spring的xml文件中配置要上传文件的大小<!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes --> <bean id="multipartResolver" class="org.springframework.web.multipart.

令仔很忙 1万+

openclaw通俗入门系列4——智能体工作区

工作区 = 智能体的家,存放它的性格、记忆、技能。默认不是牢笼(可以用沙箱隔离)。建议放到私有 Git 备份,但绝对不要提交密钥!

m0_60605453的博客 463

OSG三维渲染引擎编程学习之一:“第一章:OSG介绍” 之 “1.1 OSG简介”

第一章:OSG介绍; 1.1 OSG简介。

LuckyHanMo的博客 3224

layui上传解析excel文件

今天有一个特殊的需求,在解析excel的同时把这个excel上传到服务器上,说白了:两个POST请求。一个POST请求是将解析后excel内容体数据[怎样使用JS解析excel请到另外一篇文章查阅]传到PHP,另一个POST请求就是保存上传的excel文件了。 到百度一搜,有现在的https://www.kancloud.cn/zhiqiang/helper/706913 直接打开,毕竟是官方的,打开一看,我去,收费的。算了,在手册里翻了一下,有上传的代码,准备copy代码: HTML代...

weixin_41804506的博客 3161

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php上传解析Excel

学习记录:   一个是通过 excel_reader 来解析(只能解析 .xls的Excel,如果后缀名是自己加的,或者自己修改的那种也不行,xlsx中另存为xls的那种才可以),虽然只能解析一种,但是只要一个文件就好 这个文件的引用在执行代码的时候会报错,百度搜可以搜到解决方法,很简单。   一个是通过 PHPExcel 来解析(xlsx/xls 都可以)需要很多文件 文件都是...

dcl0531的博客 631

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java 上传Excel 并解析Excel

这个没什么好说的直接上代码了 调用方法 FileUploadDto fileUploadDto = TransferExcelDateToFileUploadDtoUtil.TransferExcelDateToFileUploadDto( request, 2, 8, 0); // 解析后返回List集合 List<FileUploadBaseDto> base...

疯子 1660

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

springboot 上传文件解析入库_springboot实现上传并解析Excel过程解析

添加pom依赖org.apache.poipoi3.16org.apache.poipoi-ooxml3.16在springboot中配置MultipartResolver//配置文件上传@Bean(name = "multipartResolver")public MultipartResolver multipartResolver() {CommonsMultipartResolver re...

weixin_39901685的博客 796

springboot实现上传并解析Excel

添加pom依赖 <!-- excel解析包 --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <!--处理2003 excel--> <dependency> <groupId>org.apache.poi</groupId>...

weixin_30640769的博客 927

Spring项目中Excel文件上传解析

今天看了一下Excel文件上传,其实和spring没有多大关系,但是写在这个框架下,所以标题就带上了Spring。 主要参考的是这篇博客 1. 引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifa

麒麟于云海翱翔 740

springboot实现excel的上传并解析文件内容

因为老大说表单填写评分太麻烦了,所以就要求我们改成excel表格上传进行评价;所以我一直没写过就只能自己摸索摸索了; 到了今天调试基本没有问题了。下文将是完整的代码,没有涉及到数据库。我现在的目的是先能正确上传并正确的读取数据。 好了,开始了。 首先; 这个是我要测试的表格,最左边还有两列,一列是序列号,一列是姓名,因为考虑到隐私,所以我就屏蔽,如果想跟我的一模一样进行的话自行...

weixin_40593587的博客 2万+

java上传excel以及解析

一、前言 在写管理后台的需求的时候,经常会用到上传excel的功能,需要我们解析Excel的内容,导入数据等。 二、上传 上传到文件服务器,文件服务有相关的上传接口,需要我们调用API上传。 @PostMapping("/v100/uploadFile") @ResponseBody public BaseResponse<String> uploadFile(HttpServletRequest request,

哈士奇 2万+

spring boot实现excel上传解析

controller: @RequestMapping(value = "/templateImportExcel", method = RequestMethod.POST) public JSONObject templateImportExcel(@RequestParam(value = "file", required = true) MultipartFile file) { ...

weixin_43237703的博客 663

java 异步上传Excel 并解析Excel导入数据库

aa

weixin_39172079的博客 4623
上一篇: mybatis使用及技巧
下一篇: Mycat问题规避
WindwardBird
博客等级 码龄7年 19粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值