.doc / .xls文档都可以以OLE2存储格式存储. org.apache.poi.poifs.filesystem.FileMagic可以帮助您仅检测文件存储格式,而不仅仅是为了区分.doc / .xls文件.

此外,似乎POI库中没有任何可用的直接API来确定给定输入流/文件的文档类型(excel或文档).

下面的示例我将有助于确定给定的流是否是一个有效的.xls(或.xlsx)文件,但需要注意它读取给定的inputstram并关闭它.

// slurp content from given input and close it

public static boolean isExcelFile(InputStream in) throws IOException {

try {

// it slurp the input stream

Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(in);

workbook.close();

return true;

} catch (java.lang.IllegalArgumentException | org.apache.poi.openxml4j.exceptions.InvalidFormatException e) {

return false;

}

}

您可以在this link上找到有关Excel文件格式的更多信息

public class TikaBasedFileTypeDetector {

private Tika tika;

private TemporaryResources temporaryResources;

public void init() {

this.tika = new Tika();

this.temporaryResources = new TemporaryResources();

}

// clean up all the temporary resources

public void destroy() throws IOException {

temporaryResources.close();

}

// return content mime type

public String detectType(InputStream in) throws IOException {

TikaInputStream tikaInputStream = TikaInputStream.get(in, temporaryResources);

return tika.detect(tikaInputStream);

}

public boolean isExcelFile(InputStream in) throws IOException{

// see https://stackoverflow.com/a/4212908/1700467 for information on mimetypes

String type = detectType(in);

return type.startsWith("application/vnd.ms-excel") || //for Micorsoft document

type.startsWith("application/vnd.openxmlformats-officedocument.spreadsheetml"); // for OpenOffice xml format

}

}

有关mime类型,请参阅this answer.

java阅读doc文件格式_java – 正确区分.xls和.doc文件的方法?相关推荐

  1. java实体类转换xml_简单实体类和xml文件的相互转换方法

    最近写一个题目,要求将一组员工实体类转换成xml文件,或将xml文件转换成一组实体类.题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换.于是今天下午立马动手 试了下,做了个简 ...

  2. java大作业设计_Java程序设计_大作业.doc

    Java程序设计_大作业.doc Java程序设计_大作业 专业:计算机科学与技术专业 学号:1245713131 姓名: 2014年12月10日 目录 作业内容:2 1.IPublisherDao接 ...

  3. java作品设计报告书_java实验报告书格式模板.doc

    java实验报告书格式模板.doc 广东第二师范学院 计算机科学系 实验报告Java实验报告实验名称 实验分组号 实 验 人 班 级 学 号 实验指导教师 实验场地 实验时间 成 绩 a51ced6b ...

  4. java基础和答案_Java基础试题和答案.doc

    Java基础试题和答案分析 Java试题 1) java程序中,main方法的格式正确的是(). (选择一项) a)static void main(String[] args) b)public v ...

  5. java程序设计基础实验_JAVA程序设计基础实验1.doc

    JAVA程序设计基础实验1 实 验 报 告 一课 程JAVA程序设计实验项目Java语言基础成 绩学 号XXXXXXXX姓 名 XXXX实验日期2012-9-17专业班级计算机科学与技术(嵌入式方向) ...

  6. 用java构造圆类_JAVA实验报告(圆类.doc

    学资学习网程序设计实验报告年月日姓名班级软工班学号课程名称语言程序设计实验项目称名构造方法与继承指导教师一实验目的编写程序定义圆类把圆的性质和行为用代码块封装起来圆的性质包括圆的半径圆心坐标行为包括计 ...

  7. java实训手册_JAVA实训项目用户手册.doc

    JAVA实训项目用户手册 用户手册 引言 1.1编写目的 编写本手册的主要目的是为了方便使用的用户管理系统能够更加方便使用此系统,以及更快的掌握JDK,MySQL,MyEclipse使之能够在用户管理 ...

  8. java 输出视频文件格式_java – 如何从各种视频文件格式中提取元数据?

    我找到了 MediaInfo,它提供了许多关于视频或音频文件的技术和标签信息. 在subs4me's source tree中有一个MediaInfo的JNI包装器,我发现它非常有用. 以下是一些代码 ...

  9. java在底层捕获异常_Java正确捕获异常的真实类

    异常捕获真实情况案例分析: 首先场景是这样的,有一个表比如是用户表,用户表的用户名字段加上了唯一索引,防止在并发情况下出现多个用户名为同样的,在业务层执行插入时候我们进行异常捕获,捕获底层抛出唯一索引 ...

最新文章

  1. 大头贴计算机教程,美颜相机大头贴在哪里 教你怎么弄动漫大头贴
  2. python程序编程千分符号怎么输入_教你用Python来玩“微信跳一跳”瞬间千分……已开源...
  3. Red Hat Enterprise Linux 8.0 正式版镜像下载
  4. PAT1057 数零壹 (20 分)
  5. yolov3-tiny神经网络FPGA(ZYNQ7020)实现
  6. python语言特性-------python2.7教程学习【廖雪峰版】(一)
  7. C语言代码规范(七)#define
  8. python文件编码及执行
  9. 《像计算机科学家一样思考Python(第2版)》——2.7 注释
  10. 32.从1到n整数中1出现的次数
  11. 微信小程序登陆流程详详详解 看这一篇就够了
  12. 最好用的 6 款 Vue 实时消息提示通知(Message/Notification)组件推荐与测评
  13. python演唱会抢票脚本_基于selenium的大麦网演唱会抢票程序
  14. Unity3d菜鸟入门的学习路线--笔记1
  15. 走近求伯君1 求伯君,1964年11月26日出生于浙江新昌县。
  16. matplotlib之pyplot教程
  17. 恒太照明在北交所上市:募资规模缩水三成,第三季度收入下滑
  18. IO 扩展(串转并)-74HC595-16*16LED点阵实验
  19. Python爬虫日记-解释def __init__(self, *args, **kwargs)
  20. 计算机桌面帐号的设置,Windows电脑桌面云便签个性账号怎么设置?

热门文章

  1. python画柱形图-Python绘制精美图表之双柱形图
  2. python系统-python系统介绍
  3. python怎么写文件-python 头文件怎么写
  4. 中国python之父是谁-Python之父重回决策层
  5. python编写爬虫的步骤-如何编写python脚本?教你做简单的爬虫,适合初学者
  6. python代码基础题-python3的基础练习题
  7. python装饰器原理-python装饰器原理与用法深入详解
  8. python界面颜色-给Python点颜色——青少年学编程
  9. python中一共有多少个关键字-Python中有几个关键字
  10. 小白学python买什么书-0基础小白学python有没有什么书可以推荐的?