07以上的xlsx是使用了OOXML和zip,将后缀修改为.zip,就可以看到文件,主要分析xl目录下的文件,如图:

主要数据文件在xl目录下面

styles.xml里面存放着excel的样式数据

很容易看出包含,字体,边框,单元格样式信息。

sharedStrings.xml存储的excel中的字符串,excel中的字符串都是放在这个里面,共享字符串,所以往往excel的文件会比txt小。

worksheets里面是excel的sheet文件

打开xml

其中r="C2"表示excel的C2这个单元格,t="s"表示该单元格是字符串,val是2表示在sharedStrings.xml里面第二个共享的字符串。

其中r="N2"表示excel的N2这个单元格,s="2"表示该单元格有样式,在styles.xml里面的cellXfs里面的第3个样式(0是第一个)。

仔细分析cellXfs会发现<xf borderId="0" fillId="0" fontId="0" numFmtId="0" xfId="0"/>里面有numFmtId,表示数字的格式,每个数字代表不同的样式,看POI的源码org.apache.poi.ss.usermodel.BuiltinFormats里面能找到每个数字代表的含义:

0, "General"

1, "0"

2, "0.00"

3, "#,##0"

4, "#,##0.00"

5, "$#,##0_);($#,##0)"

6, "$#,##0_);[Red]($#,##0)"

7, "$#,##0.00);($#,##0.00)"

8, "$#,##0.00_);[Red]($#,##0.00)"

9, "0%"

0xa, "0.00%"

0xb, "0.00E+00"

0xc, "# ?/?"

0xd, "# ??/??"

0xe, "m/d/yy"

0xf, "d-mmm-yy"

0x10, "d-mmm"

0x11, "mmm-yy"

0x12, "h:mm AM/PM"

0x13, "h:mm:ss AM/PM"

0x14, "h:mm"

0x15, "h:mm:ss"

0x16, "m/d/yy h:mm"

// 0x17 - 0x24 reserved for international and undocumented

0x25, "#,##0_);(#,##0)"

0x26, "#,##0_);[Red](#,##0)"

0x27, "#,##0.00_);(#,##0.00)"

0x28, "#,##0.00_);[Red](#,##0.00)"

0x29, "_(* #,##0_);_(* (#,##0);_(* \"-\"_);_(@_)"

0x2a, "_($* #,##0_);_($* (#,##0);_($* \"-\"_);_(@_)"

0x2b, "_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)"

0x2c, "_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"

0x2d, "mm:ss"

0x2e, "[h]:mm:ss"

0x2f, "mm:ss.0"

0x30, "##0.0E+0"

0x31, "@"

OOXML,XLSX分析的更多相关文章

  1. 导出带图片的Excel——OOXML文件分析

    需求: 普通js导出文件excel具有兼容性问题,通过js-xsl导出文件API未找到导出图片的方案,实例过少,因此针对07年后以.xlsx后缀的excel文件,通过修改后缀.zip参考文件模板来实现 ...

  2. 问题:Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?【原创】

    现象: 点"是(Y)" 提示信息中提到的error242440_02.xml文件: 问题重现: package poi; import java.io.FileNotFoundEx ...

  3. 【poi xlsx报错】使用POI创建xlsx无法打开

    如果使用的XSSFWorkbook创建的xls,打开的时候会有这样的提示: 这样 XSSFWorkbook 和HSSFWorkbook的区别. HSSF - 提供读写Microsoft Excel X ...

  4. 解析xlsx文件---Java读取Excel2007

    关于Java读取Excel2007的文章在Google.百度上搜索一下,没有太好的例子,实现的也不算太好.查看了一下Poi,最新的 POI 3.5 beta 4 支持读写 Excel2007和PPT2 ...

  5. Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要

    Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要 作者:Eric.Zhang(花名:穿越者7号) 日期:2015年1 ...

  6. Java资源大全中文版(Awesome最新版)

    Awesome系列的Java资源整理.awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站 ...

  7. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  8. 10、借助POI实现Java生成并打印excel报表(1)

    10.1.了解 Apache POI 实际开发中,用到最多的是把数据库中数据导出生成报表,尤其是在生产管理或者财务系统中用的非常普遍.生成报表格式一般是EXCEL或者PDF .利用Apache  PO ...

  9. CTF取证方法大汇总,建议收藏!

    站在巨人的肩头才会看见更远的世界,这是一篇来自技术牛人的神总结,运用多年实战经验总结的CTF取证方法,全面细致,通俗易懂,掌握了这个技能定会让你在CTF路上少走很多弯路,不看真的会后悔! 本篇文章大约 ...

随机推荐

  1. FFmpeg进行屏幕录像和录音

    文章转自:http://www.cucer.cn/2016/03/10/ffmpeg-screen-capture.html 有些时候我们需要对屏幕进行录制,比如制作视频教程,录制直播等.然而这方面的 ...

  2. List、Set、Map常见集合遍历总结

    Java中的集合有三大类,List.Set.Map,都处于java.util包中,List.Set和Map都是接口,不能被实例化,它们的各自的实现类可以被实例化.List的实现类主要有ArrayLis ...

  3. BZOJ 1603 [Usaco2008 Oct]打谷机 dfs

    题意:id=1603">链接 方法:暴力 解析: 搜1到n路径上的边权异或和-. 这几个水题刷的我有点-.. 代码: #include <cstdio> #include ...

  4. c#(winform)中自定义ListItem类方便ComboBox添加Item项

    1.定义ListItem类 public class ListItem { private string _key = string.Empty; private string _value = st ...

  5. mysql 插入 详解

    表创建好后,就可以往里插入记录了,插入记录的基本语法如下: INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,…… ...

  6. appium 1.6.3 + ios 10.2 + xcode 8.2.1 真机运行safari

    启动appium 命令: appium --address "127.0.0.1" --session-override --pre-launch --debug-log-spac ...

  7. C#多枚举值的写法与读法

    首先,定义枚举的时候必须是2,4,8,16这种2的次方的值. using System; using System.Collections.Generic; using System.Linq; us ...

  8. UIViewController的生命周期及iOS程序执行顺序 和ios6 处理内存警告

    当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                                   创建对象,分配空间2.init (initWithN ...

  9. 根据返回值动态加载select

    // 路由 if (return_routeChoice != null && return_routeChoice != "") { for (var i = 0 ...

  10. python walk函数

    os.walk方法 import os for i in os.walk(r'C:\Users\jack\Desktop\test\3_语文语文版七年级上册\1_一单元'): print(i[0]) ...