使用poi导入excel表格

古城微笑少年丶 2022-12-22 00:48 304阅读 0赞

#

一、简介

  1. ApachePOI项目是基于MicrosoftOLE 2复合文档格式开发纯Java文件格式端口的主项目。MicrosoftOffice文档以及使用MFC属性集序列化其文档对象的程序都使用OLE 2复合文档格式。

(1)OLE 2文件的POIFS

POIFS是POI中最古老、最稳定的部分。它是我们OLE 2复合文档格式到纯Java的端口。它支持读写功能。所有用于二进制(非XML)MicrosoftOffice格式的组件最终都依赖于它。

(2)Excel文档的HSSF和XSSF

HSSF是Microsoft Excel 97(-2003)文件格式(BIFF 8)到纯Java的端口。XSSF是我们将MicrosoftExcelXML(2007+)文件格式(OOXML)移植到纯Java的端口。SS是一个包,它通过一个通用API为这两种格式提供共同的支持。它们都支持读写功能。

(3)Word文档的HWPF和XWPF

HWPF是Microsoft Word 97(-2003)文件格式到纯Java的端口。它支持读取,并限制了写入功能。它还为旧的Word 6和Word 95格式提供了简单的文本提取支持。这一组成部分仍处于发展的早期阶段。它已经可以读写简单的文件。我们还在研究来自OOXML规范的WordprocessingML(2007+)格式的XWPF。这提供了对更简单文件的读写支持,以及文本提取功能。

(4)PowerPoint文档的HSLF和XSLF

HSLF是Microsoft PowerPoint 97(-2003)文件格式到纯Java的端口。它支持读写功能。我们还在研究来自OOXML规范的PresentationML(2007+)格式的XSLF。

(5)用于OLE 2文档属性的HPSF

HPSF是我们OLE 2属性集格式到纯Java的端口。属性集主要用于存储文档的属性(标题、作者、上次修改的日期等),但它们也可以用于特定于应用程序的目的。HPSF支持属性的读写。

(6)用于Visio文档的HDGF和XDGF

HDGF是我们的MicrosoftVisio 97(-2003)文件格式到纯Java的端口。它目前只支持在一个非常低的水平上阅读,和简单的文本提取。XDGF是Microsoft Visio XML(.vsdx)文件格式到纯Java的端口。它比HDGF有更多的支持。

(7)发布文档的HPBF

HPBF是Microsoft Publisher 98(-2007)文件格式到纯Java的端口。目前,它只支持在低级别读取大约一半的文件部分,以及简单的文本提取。

(8)用于TNEF(winmail.dat)Outlook附件的HMEF

HMEF是Microsoft TNEF(Transport中性编码格式)文件格式到纯Java的端口。Outlook有时会使用TNEF对邮件进行编码,通常以winmail.dat的形式出现。HMEF目前只支持低水平的阅读,但我们希望添加文本和附件提取。

(9)用于Outlook消息的HSMF

HSMF是我们将MicrosoftOutlook消息文件格式移植到纯Java的端口。它目前只包含一些MSG文件的文本内容和一些附件。进一步的支持和文件正在缓慢地提供。目前,建议用户查阅单元测试,例如使用。Microsoft最近将Outlook文件格式添加到OSP中。现在可以获得更多信息,从而使实现此API成为一项更容易的任务。

二、引入依赖

  1. <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
  2. <dependency>
  3. <groupId>org.apache.poi</groupId>
  4. <artifactId>poi-ooxml</artifactId>
  5. <version>4.1.2</version>
  6. </dependency>

三、读取excel文件

  1. 1)可以使用一下的构造器创建XSSFWorkbook对象。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMjk4MzUx_size_16_color_FFFFFF_t_70

(2)获取指定的工作表

2020111710590526.png

(3)关于XSSFSheet的操作

获取行

20201117110541707.png

获取行迭代器

2020111711070666.png

获取最后一行的下标

20201117110943876.png

(4)关于XSSFRow的操作

获取单元格迭代器

20201117111303110.png

获取单元格

20201117111404849.png

获取单元格位置

2020111711145869.png

(5)关于XSSFCell的操作

以字符串的形式获取单元格的值。对于数值单元格,我们抛出一个异常。对于空白单元格,我们返回一个空字符串。对于非字符串公式的公式,我们抛出一个异常

20201117111841717.png

获取单元格的数值。对于字符串,我们抛出一个异常。对于空白单元格,我们返回0。对于公式或错误单元格,我们返回预先计算的值;

20201117112026347.png

获取单元格作为日期的值。对于字符串,我们抛出一个异常。对于空白单元格,我们返回一个null。

2020111711243382.png

返回单元格类型。数组公式中的表返回CellType。所有单元格的公式,即使公式仅在OOXML文件中为数组的左上角单元格定义。注意:POI不支持数据表公式。在POI看来,数据表中的单元格是按其缓存值类型划分的普通单元格。

20201117112741980.png

  1. CellType可选的枚举类型

20201117112900246.png

(6)关于DataFormatter操作

DataFormatter包含格式化存储在单元格中的值的方法。当您需要完全按照Excel中显示的方式显示数据时,这对于报表和GUI演示非常有用。支持的格式包括货币、SSN、百分比、小数、日期、电话号码、邮政编码等。

在内部,格式将使用诸如DecimalFormat和SimpleDateFormat等格式的子类来实现。因此,该类使用的格式必须遵守与这些格式子类相同的模式规则。这意味着只有合法的数字模式字符(“0”,”#“,”.”,”,”等)可以以数字格式出现。可以在数字模式之前或之后插入其他字符,以形成前缀或后缀。

向可用格式添加新格式。将传递给格式的格式方法(由java.text.Format# Format指定)的值将是数值单元格中的双精度值。因此,format方法中的代码应该期望得到一个数字值。

20201117114258388.png

将单元格的格式化值作为字符串返回,而与单元格类型无关。如果无法解析Excel格式模式,则将使用默认格式格式化单元格值。当传递一个空或空白单元格时,该方法将返回一个空字符串(“”)。将不计算公式类型单元格中的公式。

2020111711444948.png

发表评论

表情:
评论列表 (有 0 条评论,304人围观)

还没有评论,来说两句吧...

相关阅读