Excel导入解析数据

数据分类分级 数据识别-excel分类分级模版文件导入、解析 之前的excel导入解析采用的是Apache poi,但是在Java领域解析、生成Excel比较有名的框架如Apache poi,jxl等,在使用的时候,存在一个严重的问题,就是非常的耗内存,如果系统并发量不大的话,可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的垃圾回收。EasyExcel官网 阅读详情

准备:1.在D盘创建NPS目录,目录下创建test.xlsx 文件

           2. 文件内容:

        3.导包如下:

           poi-3.9.jar

          poi-ooxml-3.9.jar

          poi-scratchpad-3.9.jar

         poi-ooxml-schemas-3.7.jar

         xmlbeans-2.3.0.jar


         4. 代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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.xssf.usermodel.XSSFWorkbook;

public class ExpressExcel {
    public static void main(String[] args) {
        /**
         * 步骤:
         * 1.取出文件,将其转化为流
         * 2.根据不同的后缀名判断使用哪种excel 操作类
         * 3.得到总行数,并遍历
         * 4.得到每行的列数,并遍历
         * 5.取出每行中的每列,并判断数据格式,转化为对应的字符串
         */
        String fileName = "test.xlsx";//文件名称
        String filePath = "D:/NPS/";//文件位置
        File  f = new File(filePath+File.separator+fileName);
        InputStream in = null;
        try {
            in = new FileInputStream(f);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //判断文件名后缀
        String suffix = fileName.substring(fileName.indexOf(".")+1);
        System.out.println(suffix);
        XSSFWorkbook wbs = null;
        HSSFWorkbook wbs1 = null;
        Sheet sheet = null;
        //根据文件后缀名判断使用poi包中的哪个类 xls 使用HSSFWorkbook , xlsx 使用 XSSFWorkbook(xls 也可以使用XSSFWorkbook)
        /**
         * 上传使用:HSSFWorkbook,XSSFWorkbook
         * 下载使用:SXSSFWorkbook(excel 2017 支持大批量导出) ,
         */
        if ("xls".equalsIgnoreCase(suffix)){
            try {
                wbs1 = new HSSFWorkbook(in);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            sheet = wbs1.getSheetAt(0);
        } else if("xlsx".equalsIgnoreCase(suffix)){
            try {
                wbs = new XSSFWorkbook(in);
            } catch (IOException e) {
                e.printStackTrace();
            }  
            sheet = wbs.getSheetAt(0);
        }else{
            System.out.println("不是excel文件格式!");
            return;
        }
        //得到总行数
        int rnum = sheet.getLastRowNum();
        
        System.out.println("总行数:"+rnum);
        
        for(int i = 0;i<=rnum;i++){
            Row r =  sheet.getRow(i);
            //得到每行的列数
            int cellNum = r.getLastCellNum();
            System.out.println("第"+i+"行的列数:"+cellNum);
            for(int j = 0;j<cellNum;j++){
                
                
                String str = "";
                try {
                    str = contentToString(r.getCell(j));
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.print(str+";");
            }
            System.out.println("\n");
        }
    }    
     private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     /**
      * Excel 数据和java格式转换
      * @param cells
      * @return
      * @throws UnsupportedEncodingException
      */
     private static String contentToString(Cell cells) throws UnsupportedEncodingException
        {
            if (cells == null) {
                return "";
            }
            // 单元格数据类型
            int cellType = cells.getCellType();
            String result = null;
            BigDecimal c = null;
            switch (cellType)
            {
            // 是数字类型
            case HSSFCell.CELL_TYPE_NUMERIC:
                
                // 是日期类型
                if (HSSFDateUtil.isCellDateFormatted(cells)) {
                    Date date = HSSFDateUtil
                            .getJavaDate(cells.getNumericCellValue());
                    synchronized (sdf) {
                        result = sdf.format(date);
                    }
                } else {
                    
                    c = new  BigDecimal(cells.getNumericCellValue()+"");
                    result = c.toPlainString();
                    /**
                     *如果数据格式为xxx.0 则取出小数点及后面的内容
                     */
                    if(result.contains(".") && (result.length()-result.indexOf(".0") == 2)){
                        result = result.substring(0, result.indexOf(".0"));
                    }
                }
                break;
                
            // 是字符串类型
            case HSSFCell.CELL_TYPE_STRING:
                result = cells.getStringCellValue();
                break;
            default:
                result = "";
            }
            return result;
        }
}

5.输出结果:


使用Apache POI和XMLBeans解析Excel并导入数据库指南 Apache POI是一个Java库,用于处理Microsoft Office文档格式。它提供了读取和修改Microsoft Office文件的功能,特别适用于处理Excel (.xls 和 .xlsx), Word (.doc 和 .docx), PowerPoint (.ppt 和 .pptx) 以及Outlook (.msg) 文件。XMLBeans是由Apache软件基金会开发的一款处理XML文档的Java库。 阅读详情

相关推荐

从零到一:Qt与PCL的跨平台开发环境搭建全攻略

本文详细介绍了从零开始搭建Qt与PCL跨平台开发环境的完整流程,涵盖Windows、Linux和macOS三大平台。重点解析了Qt5与Qt6版本选择、PCL库安装配置、VTK集成等关键技术要点,并提供跨平台CMake项目模板和常见问题解决方案,助力开发者快速构建三维点云处理应用。

weixin_29280657的博客 384

Java Excel导入及解析数据

问题背景:对于一些需要快速生成大量数据的情况,通过系统一个一个去生成基本上是不现实的,一般都会采用导入excel的方式去实现。例如:学校的成绩分析管理,需要通过导入一次考试的excel生成必要的分析数据。 实现必要基础,个人认为需要接口传文件的时候附加其他业务参数,如年级等,其次还需要比较完整的解析excel文件 (1)、接口调用方式和接口定义 接口定义如下,用MultipartFile来接收文件,其他入参包含在对象中 接口调用,使用post/form-data的请求,文件传File,其他参数传

weisian的博客 4903

【汽车故障诊断2】从标准到实战:解码DTC格式背后的诊断逻辑

本文深入解析汽车诊断故障码(DTC)的格式与逻辑,对比了OBD-II标准(如ISO 15031-6)的5字符格式与UDS协议(ISO 14229-1)下更丰富的3字节格式。文章从国际标准出发,结合实战案例,阐述了DTC如何作为汽车电子系统的“体检报告”,帮助工程师和维修技师精准定位故障,并详细解读了UDS 19服务如何读取和管理DTC状态。

berry的博客 713

Java实现Excel导入导出操作详解

本文章向大家介绍Java实现Excel导入导出操作详解,主要内容包括前言、1. 功能测试、1.1 测试准备、1.2 数据导入、1.2.1 导入解析为JSON、1.2.2 导入解析为对象(基础)、1.2.3 导入解析为对象(字段自动映射)、1.2.4 导入解析为对象(获取行号)、1.2.5 导入解析为对象(获取原始数据)、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

wuxiaopengnihao1的博客 7952

Apifox CLI + Claude Skills:将接口自动化测试融入ai

基于 Apifox CLI、Claude Code以及Claude Skills组合,实现自然语言触发接口自动化测试。

wwz_0012的博客 598

Python爬虫实战:深度解析B站弹幕异步采集技术与数据可视化

title=f"弹幕词云 Top 100 (BV: {bvid})", title_textstyle_opts=opts.TextStyleOpts(font_size=23).add(series_name="弹幕词云", data_pair=list(top_100_words.items()), word_size_range=[20, 100]).add_xaxis([f"{i}-{i+1}分" for i in range(len(time_distribution))])

2201_76125261的博客 640

Java 读取excel文件并导入数据库

java的excel读取并导入数据库

weixin_48913290的博客 7844

71.qt quick-可伸展菜单-抽屉栏示例 通用QML界面(一键换肤)

特点: 支持动态添加item、删除item、自适应界面 附带添加删除、展开等动画 同时支持qwidget、qml加载 支持number提示(比如消息数量等) 侧边抽屉栏支持动画伸展 支持换肤、拖拽、最大化等

抵抗时间扭曲,坚持做一件有意义的事 5286

Java poi+excel导入

用的SSM框架,所需要的jar包如图所示:,链接地址:jar包下载  ,下面直接上代码。1、ExcelUtil工具类&lt;span style="color:#993399;"&gt;&lt;span style="font-size:18px;color:#993399;"&gt;import java.text.DecimalFormat; import java.text.SimpleDa...

学而不思则罔,思而不学则殆 3万+

Python爬虫实战:高德地图POI信息爬取(餐馆/加油站等),附选址分析技巧

高德API配置AMAP_KEY = "你的高德API Key" # 替换成自己的Key# 爬取参数CITY = "成都" # 城市DISTRICTS = ["锦江区"] # 区域,可添加多个(比如["锦江区", "武侯区"])KEYWORDS_LIST = ["川菜馆", "加油站"] # 要爬取的POI类型TYPES = {"川菜馆": "050101", # 餐饮服务→中餐→川菜馆(高德POI分类编码)"加油站": "110100" # 交通设施→加油站。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2470

支付域——“清算、结算、清结算”

本文深入探讨了支付系统中的清算和结算流程,包括核心流程、模块设计及特殊场景处理。文章详细阐述了交易收单、资金冻结、清分规则、清算批处理、结算出账等关键步骤,并讨论了交易失败、数据不一致、退款、汇率波动等异常情况的处理方法。

庄小焱 2564

使用Hutool解析excel导入数据

Hutool解析excel导入数据 本人是 hutool 的狂热粉丝~~~ 话不多说,上代码!!! hutool依赖,这里暂不赘述,,官网找即可。 /** * 导入样本事故 controller * @param file */ @PostMapping("/importTemplate") @ApiOperation(value = "导入样本事故") public R importTemplate(MultipartFile file) { return new R(caus

qq_43473129的博客 4149

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

vs code导入excel文件并且解析excel文件数据

实习工作需要通过vs code导入excel文件并且解析excel文件数据,学习整理了一下相关方法分享给大家^_^

weixin_45342302的博客 6534

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

aa

weixin_39172079的博客 4623

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Excel实现上传 导入 解析Excel 页面展示Excel数据

Excel实现上传 导入 解析Excel 页面展示Excel数据

lanqibaoer的专栏 7266

ssm解析excel表导入数据到数据库

1、maven配置相应jar &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi&lt;/artifactId&gt; &lt;version&gt;3.8-beta3&lt;/version&gt

userlhj的博客 6659

element excel导入数据,解析获取数据

前端导入excel表格,解析为json格式数据 npm install xlsx -g 全局安装xlsx 新建一个组件,随意命名,键入以下代码,复制即可用 <template> <span> <input class="input-file" type="file" @change="exportData" accept=".csv...

YourNikee的博客 2473

简单的前后端分离的EXCEL上传、解析、导入数据库

文章目录写在前面excel上传至后端设置后端接口前端使用upload组件解析excel写入数据库写在后面 写在前面 前后端分离:前端VUE+ELEMENT,后端springboot。 excel上传至后端 设置后端接口 先不做处理,收到文件就回复一个导入成功。(RespBean是为了规范,自己封装的一个用于统一回复格式的类,这里改成String也是一样的) @PostMapping("/i...

weixin_43566648的博客 5554

java解析复杂excel表格并导入数据库

前言 最近接到一个需求,需要把一份37万的excel数据解析并导入数据库, 分析 表格格式相对复杂包含很多合并单元格, 不符合通过navicat直接导入的要求, 数据量比较大, 建议一次保存25条,否则会导致内存泄漏; 代码 1.引入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9

weixin_45239670的博客 5406

java解析excel进行导入数据库操作

到这用postman测试是可以添加数据到数据库了。应该是这几个依赖但是下面删了也不行了,就留着了。

m0_47979709的博客 2533

解析excel文件并将数据导入到数据库中

今天领导给安排了一个临时工作,让我将一个excel里面的数据解析后放入数据库中,经过一个下午的努力成功完成,现在将代码献上,希望对大家有所帮助 一、需要导入的jar   1.commons-collections4-4.1.jar   2.poi-3.17-beta1.jar   3.poi-ooxml-3.17-beta1.jar   4.poi-ooxml-schemas-3.17-...

weixin_30595035的博客 1451

【Springboot+mybatis】 解析Excel并批量导入到数据库

【Springboot+mybatis】 解析Excel并批量导入到数据库 置顶 2018年01月16日 20:05:52 冉野丶 阅读数:4060 标签: excel导入数据库 文件上传 excel解析 更多 个人分类: POI 工作问题归纳 版权声明:本文为博主原创文章,未经博主允...

chuangmao7450的博客 1303

Excel导入保存附件和解析数据

Excel导入保存附件和解析数据 一,前端上传附件的组件 1、先给一个下载模板的按钮       // 下载Excel模板 downLoadExcel: function () { window.open(GLOBAL_CONFIG.webSiteRoot + "/main/common/files/xxx.xls"); ...

weixin_30274627的博客 515

EXCEL解析导入,多线程批量插入大量数据

EXCEL解析导入,批量插入大量数据 excel导入基本分为3个步骤: 1. 上传文件 2. 解析文件 3. 逻辑内容 首先查看是哪一步需要优化,一般需要在第3步,插入数据库的逻辑优化。 如果数据量比较大的话,单条sql执行很慢,几条数据几次和数据库交互。影响执行效率。解决办法: 1. 批量插入 2. 多线程执行 直接贴代码,项目实例: public Result importExcel1() { AmroContext context = AmroContextUtil.get

qq_43548264的博客 2357
上一篇: java入门基础编-3-一些术语规范
下一篇: Excel导出数据
java_resolver
博客等级 码龄10年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值