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/588230/

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

(0)

大家都在看

  • 题解0004:单词接龙(洛谷P1019)-uf0_金币灰黄

    题目描述:已知一组单词,给定一个开头的字母,要求出以这个字母开头的最长的”龙”(每个单词都最多在”龙”中出现两次),在两个单词相连时…

    数据结构和算法 2023年6月12日
    071
  • 表达式求值

    ​ 当初抱着总结所学的想法,硬着头皮写了几篇博客。东拼西凑,理解的不够深刻,再加上写博客不够熟练导致再复盘的时候大多数的注意力放在了怎么写上面,而忽视了应该怎样写,写出来要表达一些…

    数据结构和算法 2023年6月7日
    082
  • 快速排序和栈溢出

    以前学算法的时候用的《啊哈!算法》,关于算法的各类书籍对于新手都很不友好,这本书绝对是新手第一本书。 当然啦,如果你是大佬天才,直接跳过这本书。 下面介绍《啊哈!算法》中关于快排的…

    数据结构和算法 2023年6月8日
    080
  • 算法竞赛进阶指南 0x24 迭代加深

    对于深度优先,如果答案在很浅的部位,但是整个搜索树过于深,那么就会寄掉。 但是对于广度优先,本来挺好,但是在队列里面存储太多的元素,到时爆。同时,广度优先也不容易存储数据。 对于迭…

    数据结构和算法 2023年6月12日
    0111
  • C++11实现的数据库连接池

    它什么是? 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;类似的还有线程池。 为什么要用? 一个数据库连接对象均对应…

    数据结构和算法 2023年6月8日
    076
  • 【题解】教辅的组成

    教辅的组成 题目背景 滚粗了的 HansBug 在收拾旧语文书,然而他发现了什么奇妙的东西。 题目描述 蒟蒻 HansBug 在一本语文书里面发现了一本答案,然而他却明明记得这书应…

    数据结构和算法 2023年6月12日
    077
  • B. Irreducible Anagrams【CF 1290B】

    思路: 设tx为t类别字符的个数。 ①对于长度小于2的t明显是”YES”②对于字符类别只有1个的t明显是”YES”③对于字符类别有2…

    数据结构和算法 2023年6月7日
    069
  • C++左值、右值

    C++左值、右值 值类别 在 C++11之后,C++根据 被标识:可通过不同标识符指代同一实体。(对象/内存) 可移动:可作为移动语义函数的参数,例如移动构造,移动赋值。 将值分为…

    数据结构和算法 2023年6月8日
    080
  • 字典树(Trie)

    Trie最大的问题:空间!所以可以使用一下解决方案。 Code #pragma once #include class Node { public: explicit Node()…

    数据结构和算法 2023年6月8日
    086
  • leetcode算法-两数相除 前端

    题目链接: leetcode-29-两数相除 此题需要在不使用乘法,除法,取模的情况下求的两数相除的结果, 开始看到这道题,以为使用位运算做的,结果发现位运算里面太多的循环,导致并…

    数据结构和算法 2023年6月12日
    084
  • 简单的打麻将!!!!

    https://nanti.jisuanke.com/t/39612 题面: 在麻将游戏中,有 3434 种牌,分别是 1-91−9 的万,1-91−9 的筒,1-91−9 的条,…

    数据结构和算法 2023年6月7日
    070
  • 聊聊OOP中的设计原则以及访问者模式

    一 设计原则 (SOLID) 1. S – 单一职责原则(Single Responsibllity Principle) 1.1 定义 一个类或者模块只负责完成一个职…

    数据结构和算法 2023年6月12日
    084
  • kruskal 及其应用

    kruskal 最小生成树 kruskal 是一种常见且好理解的最小生成树(MST)算法。 前置知识 并查集 看到路径压缩就可以了。 生成树 在有 n 的顶点的无向图中,取其中 n…

    数据结构和算法 2023年6月12日
    085
  • Java学习笔记

    1. Java语言介绍 在需要运行Java应用程序的操作系统中,安装一个与操作系统对应的Java虚拟机即可。Java虚拟机(JVM)就像一个翻译一样,将java语言程序翻译成各种操…

    数据结构和算法 2023年6月12日
    081
  • 从new File(“”)到jdk源码

    概述 今天在项目中看到下面两行代码,看注释说是获取当前工作路径,之前也没有用过这种用法,比较好奇还能这样用,所以研究了一下源码。 //获&#x53D6…

    数据结构和算法 2023年6月8日
    0107
  • 正奇边形可以被分割成多少个多边形

    本题需要求一个正 奇边形可以被划分成多少个区域。 一、欧拉示性数公式: V(n) + F(n) – E(n) = 2 V(n) —–> n…

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