Excel文件校验

工作中,经常存在excel文件的导入导出的相关工作,因此正确的文件格式校验成为必须。
不合适的文件校验方式会导致非法文件跳过校验,从而产生不必要的麻烦。
比如,通过文件后缀名的方式进行校验,这种方式其实是存在问题的,因为后缀名可自定义。
正确的校验方式,则应该根据文件流相关属性进行判断。

下面,根据个人工作和参考其他人的经验,逐一进行说明。

一、excel文件两种格式

正常excel存在两种常见的格式,分别是 2003 和 2007格式,
其文件后缀名分别是 .xls.xlsx。2007版相对与2003版最大的变动是它的文件格式,使用xml语言的压缩方式,更规范也更适合新的需求。

两种格式,都仍有人在同时使用,我个人推荐 2007 格式。

序号 名称 后缀名 文件格式 兼容性 1 2003 .xls bin 不向上兼容 2 2007 .xlsx xml 向下兼容

二、 excel文件校验

这种方式其实也可以用来校验,但只属于初验。用户通过修改文件后缀名,可以绕过这种校验方式。
比如,demo.txt文件,我们可以强制修改文件后缀名,让它变成demo.xls文件。

通常校验的方式是文件名后缀截取,只截取最后一个 . 字符后的内容, 或者使用正则表达式。

处理excel的开源jar包有两个,一个是 jxl, 一个是 apache poi,现在主流的是后者。

apache poi 3.xx 版本校验excel跟 4.xx版本存在不同,这里仅就本人遇到的情况进行说明。
这里3.xx版本使用的是 3.10.1版本。

同上,我们先引入需要的jar包。

Original: https://www.cnblogs.com/lunyu/p/16425192.html
Author: 论语
Title: Excel文件校验

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611406/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • [javaweb]过滤器处理乱码

    过滤器 有一些信息不应该被处理,要被过滤的。 1.导包 javax.servlet.jsp.jstl jstl-api 1.2 taglibs standard 1.1.2 jav…

    数据库 2023年6月16日
    084
  • CPU 是如何与内存交互的

    这篇文章主要整理了一下计算机中的内存结构,以及 CPU 是如何读写内存中的数据的,如何维护 CPU 缓存中的数据一致性。什么是虚拟内存,以及它存在的必要性。如有不对请多多指教。 概…

    数据库 2023年6月14日
    093
  • 计算机网络 | TCP 连接的建立 和 TCP 连接的断开

    TCP 连接的建立过程 一开始,客户端和服务端都处于 close 状态。 先是服务端监听某个端口,此时服务端处于 listen 状态。 这个时候客户端就可以发送连接请求报文了。 第…

    数据库 2023年6月11日
    0126
  • OpenSSH制作rpm包和升级OpenSSH过程中遇到的问题

    百度网盘:https://pan.baidu.com/s/1gqpH2xeOkYHJ0CiztbmqoQ 提取码:imfg cp x11-ssh-askpass-1.2.4.1.t…

    数据库 2023年6月14日
    0101
  • 前端开发:如何正确地跨端

    导读:面对多种多样的跨端诉求,有哪些跨端方案?跨端的本质是什么?作为业务技术开发者,应该怎么做?本文分享阿里巴巴ICBU技术部在跨端开发上的一些思考,介绍了当前主流的跨端方案,以及…

    数据库 2023年6月14日
    092
  • AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵

    💡 作者:韩信子@ShowMeAI📘 深度学习实战系列:https://www.showmeai.tech/tutorials/42📘 自然语言处理实战系列:https://www…

    数据库 2023年6月14日
    0103
  • MySQL 索引排序

    表结构和数据 CREATE TABLE t1 ( id int(11) NOT NULL AUTO_INCREMENT, a int(11) DEFAULT NULL, b int…

    数据库 2023年5月24日
    077
  • 4. 事务和锁

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    095
  • Python递归遍历目录并删除文件中的前N行

    1 import os 2 3 # 遍历目录下的所有文件 4 def check_file(file_path): 5 os.chdir(file_path) 6 print(os…

    数据库 2023年6月14日
    081
  • 达梦产品技术支持-DM8-数据库安装

    (该文档只适合个人环境搭建,未涉及到数据库的各种参数配置,未涉及到数据库规划,若需要企业环境搭建请咨询专业人员) 基于Windows的安装 windows下安装是图形化界面,与li…

    数据库 2023年6月11日
    079
  • Redis-缓存和数据库一致性问题

    三种策略 Cache Aside 只读缓存模式,即读操作命中缓存直接返回,未命中从后端数据库加载到缓存再返回。写操作直接更新数据库,并删除缓存。👍一切以后端数据库为准,最常用的方式…

    数据库 2023年6月11日
    090
  • try enabling the break write locks option for the cleanup

    如图: 一般是在中断:提交/更新的时候产生的。 一般两种解决方式(可以参考其他的): 1,重启ide(我的就是这么神奇,重启idea后好了); 2,在cleanup时勾选 brea…

    数据库 2023年6月11日
    0122
  • MySQL系统安装与部署

    数据库版本标准化 1.确认Supported Platforms https://www.mysql.com/support/ 2.确认安装版本 推荐:5.7.22 ,8.0.20…

    数据库 2023年5月24日
    083
  • Activiti7 多实例子流程

    顾名思义,子流程是一个包含其他活动、网关、事件等的活动,这些活动本身形成了一个流程,该流程是更大流程的一部分。 使用子流程确实有一些限制: 一个子流程只能有一个none类型的启动事…

    数据库 2023年6月14日
    0158
  • MySQL函数学习(三)—–日期和时间函数

    注:笔记旨在记录 三、MySQL 日期和时间函数 3.1 获取时间、日期、年、月、日、周、日相关函数 \ 函 数 名 称 作 用 1 CURDATE 和 CU…

    数据库 2023年6月16日
    069
  • IntelliJ IDEA 断开svn连接

    1 设置菜单 2 进入pluglns 菜单,点击 browse repositonries….. 3 搜索 svn disconnect,然后安装插件 4 安装插件后,…

    数据库 2023年6月6日
    0158
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球