Apache Poi 简明教程

Apache POI - Core Classes

本章将讲解 Apache POI API 下的几个类和方法,它们对于使用 Java 程序处理 Excel 文件至关重要。

Workbook

这是所有创建或维护 Excel 工作簿的类的父接口。它属于 org.apache.poi.ss.usermodel 包。实现此接口的两个类如下所示 −

  1. HSSFWorkbook − 此类具有以 .xls 格式读取和写入 Microsoft Excel 文件的方法。它与 MS-Office 97-2003 版本兼容。

  2. XSSFWorkbook − 此类具有以 .xls 或 .xlsx 格式读取和写入 Microsoft Excel 和 OpenOffice xml 文件的方法。它与 MS-Office 2007 或更高版本兼容。

HSSFWorkbook

它是 org.apache.poi.hssf.usermodel 包下的一种高级类。它实现了 Workbook 接口,用于处理 .xls 格式的 Excel 文件。列出此类下的一些方法和构造函数。

Class Constructors

Sr.No.

Constructor & Description

1

HSSFWorkbook() 从头创建一个新的 HSSFWorkbook 对象。

2

HSSFWorkbook(DirectoryNode directory, boolean preserveNodes) 在特定目录内创建一个新的 HSSFWworkbook 对象。

3

HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes) 给定一个 POIFSFileSystem 对象及其内部的特定目录,它会创建一个 SSFWorkbook 对象来读取指定的工作簿。

4

HSSFWorkbook(java.io.InputStream s) 使用输入流创建一个新的 HSSFWorkbook 对象。

5

HSSFWorkbook(java.io.InputStream s, boolean preserveNodes) 在输入流周围构建一个 POI 文件系统。

6

HSSFWorkbook(POIFSFileSystem fs) 使用 POIFSFileSystem 对象构建一个新的 HSSFWorkbook 对象。

7

HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes) 给定一个 POIFSFileSystem 对象,它会创建一个新的 HSSFWorkbook 对象来读取指定的工作簿。

这些构造函数中经常使用的参数有 −

  1. directory − 要处理的 POI 文件系统目录。

  2. fs − 包含工作簿流的 POI 文件系统。

  3. preservenodes − 此参数是可选项,用于决定是否保留诸如宏等其他节点。如果已设置该参数,则它将占用大量内存,因为它将所有 POIFileSystem 都存储在内存中。

Note − HSSFWorkbook 类包含许多方法;但是,它们仅与 xls 格式兼容。在本教程中,重点在于最新版本的 Excel 文件格式。因此,此处未列出 HSSFWorkbook 的类方法。如果您需要这些类方法,那么可以在 https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html. 处参考 POI-HSSFWorkbook 类 API。

XSSFWorkbook

它是一个用于表示高低级别 Excel 文件格式的类。它属于 org.apache.xssf.usemodel 包并实现了 Workbook 接口。以下是此类下的方法和构造函数。

Class Constructors

Sr.No.

Constructor & Description

1

XSSFWorkbook() 创建一个新的空 XSSFworkbook 对象。

2

XSSFWorkbook(java.io.File file) 根据给定的文件构造一个 XSSFWorkbook 对象。

3

XSSFWorkbook(java.io.InputStream is) 缓存整个输入流到内存中,然后打开一个 OPCPackage 对象来构造一个 XSSFWorkbook 对象。

4

XSSFWorkbook(java.lang.String path) 根据文件的完整路径构造一个 XSSFWorkbook 对象。

Class Methods

Sr.No.

Method & Description

1

createSheet() 为此工作簿创建一个 XSSFSheet,将它添加到工作表中,并返回高级表示形式。

2

createSheet(java.lang.String sheetname) 为此工作簿创建一个新的工作表并返回高级表示形式。

3

createFont() 创建一个新字体并将其添加到工作簿的字体表中。

4

createCellStyle() 创建一个新的 XSSFCellStyle 并将其添加到工作簿的样式表中。

5

createFont() 创建一个新字体并将其添加到工作簿的字体表中。

6

setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow,int endRow) 根据指定的参数设置给定工作表的打印区域。

对于此类的剩余方法,请参考完整 API 文档获取完整方法列表 − https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html.

Sheet

Sheet 是 org.apache.poi.ss.usermodel 包下的一个接口,它是创建具有特定名称的高级或低级电子表格的所有类的超接口。最常见的电子表格类型是工作表,表示为单元格网格。

HSSFSheet

这是 org.apache.poi.hssf.usermodel 包下的一个类。它可以创建 Excel 电子表格,还允许设置工作表样式和工作表数据。

Class Constructors

Sr.No.

Constructor & Description

1

HSSFSheet(HSSFWorkbook workbook) 创建 HSSFWorkbook 调用的新 HSSFSheet 从头开始创建工作表。

2

HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet) 创建表示给定工作表对象的 HSSFSheet。

XSSFSheet

这是一个类,它表示电子表格的高级别表示。它位于 org.apache.poi.hssf.usermodel 包中。

Class Constructors

Sr.No.

Constructor & Description

1

XSSFSheet() 创建新的 XSSFShet − 由 XSSFWorkbook 调用以从头开始创建工作表。

2

XSSFSheet(PackagePart part, PackageRelationship rel) 创建一个 XSSFSheet 并表示给定的包部分和关系。

Class Methods

Sr.No.

Method & Description

1

addMergedRegion(CellRangeAddress region) 添加一个合并的单元格区域(因此这些单元格形成一个单元格)。

2

autoSizeColumn(int column) 调整列宽以适应内容。

3

iterator() 此方法是 rowIterator() 的别名,用于允许 foreach 循环

4

addHyperlink(XSSFHyperlink hyperlink) 在此工作表的超链接集合中注册一个超链接

有关此类的其余方法,请参阅以下位置的完整 API − https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.

Row

这是一个 org.apache.poi.ss.usermodel 包下的接口。它用于对电子表格中一行的高级表示。它是 POI 库中表示行的所有类的超级接口。

XSSFRow

这是一个 org.apache.poi.xssf.usermodel 包下的类。它实现了 Row 接口,因此它可以在电子表格中创建行。以下是该类下的方法和构造函数。

Class Methods

Sr.No.

Method & Description

1

createCell(int columnIndex) 在行内创建新单元格并返回它。

2

setHeight(short height) 短单位设置高度。

有关此类的其余方法,请遵循给定的链接 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html

Cell

这是一个 org.apache.poi.ss.usermodel 包下的接口。它是电子表格行中的单元格表示的所有类的超级接口。

单元格可以获取各种属性,例如空白、数字、日期、错误等。在将单元格添加到行之前,它们应该有自己的编号(从 0 开始)。

XSSFCell

这是一个 org.apache.poi.xssf.usermodel 包下的类。它实现了 Cell 接口。它是电子表格行中单元格的高级表示。

Class Methods

Sr.No.

Method & Description

1

setCellStyle(CellStyle style) 设置单元格样式。

2

setCellType(int cellType) 设置单元格类型(数字、公式或字符串)。

3

setCellValue(boolean value) 为单元格设置一个布尔值。

4

setCellValue(java.util.Calendar value) 设置单元格的日期值。

5

setCellValue(double value) 设置单元格的数字值。

6

setCellValue(java.lang.String str) 设置单元格的字符串值。

7

setHyperlink(Hyperlink hyperlink) 为该单元格分配超链接。

有关此类的剩余方法和字段,请访问以下链接 − https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html

XSSFCellStyle

此类属于 org.apache.poi.xssf.usermodel 包。它将提供有关电子表格单元格中内容格式的可能信息。它还提供了修改该格式的选项。它实现了 CellStyle 接口。

Class Constructors

Sr.No.

Constructor & Description

1

XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource, ThemesTable theme) 从提供的部件创建单元格样式

2

XSSFCellStyle(StylesTable stylesSource) 创建一个空的单元格样式

Class Methods

Sr.No

Method & Description

1

setAlignment(short align) 设置单元格的水平对齐类型

2

setBorderBottom(short border) 设置单元格底边框的边框类型

3

setBorderColor(XSSFCellBorder.BorderSide side, XSSFColor color) 设置所选边框的颜色

4

setBorderLeft(Short border) 设置单元格左边框的边框类型

5

setBorderRight(short border) 设置单元格右边框的边框类型

6

setBorderTop(short border) 设置单元格上边框的边框类型

7

setFillBackgroundColor(XSSFColor color) 设置以 XSSFColor 值表示的背景填充色。

8

setFillForegroundColor(XSSFColor color) 设置以 XSSFColor 值表示的前景填充色。

9

setFillPattern(short fp) 指定图案和纯色单元格填充的单元格填充信息。

10

setFont(Font font) 设置此样式的字体。

11

setRotation(short rotation) 设置单元格中文本的旋转角度。

12

setVerticalAlignment(short align) 设置单元格的垂直对齐类型。

有关此类中的剩余方法和字段,请通过以下链接查找 − https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCellStyle.html

HSSFColor

这是一个属于 org.apache.poi.hssf.util 包的类。它以嵌套类的形式提供不同的颜色。通常,用它们自己的索引来表示这些嵌套类。它实现了颜色接口。

Nested classes

此类中的所有嵌套类均为静态类,且每个类都有自己的索引。这些嵌套颜色类用于单元格格式设置,例如单元格内容、边框、前景色和背景色。如下列出的几个嵌套类。

Sr.No.

Class names (colors)

1

HSSFColor.AQUA

2

HSSFColor.AUTOMATIC

3

HSSFColor.BLACK

4

HSSFColor.BLUE

5

HSSFColor.BRIGHT_GREEN

6

HSSFColor.BRIGHT_GRAY

7

HSSFColor.CORAL

8

HSSFColor.DARK_BLUE

9

HSSFColor.DARK_GREEN

10

HSSFColor.SKY_BLUE

11

HSSFColor.WHITE

12

HSSFColor.YELLOW

Class Methods

此类中只有一个方法非常重要,用于获取索引值。

Sr.No.

Method & Description

1

getIndex() 此方法用于获取嵌套类的索引值。

有关剩余方法和嵌套类,请参考以下链接 − https://poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html

XSSFColor

这是一个属于 org.apache.poi.xssf.usermodel 包的类。它用于在电子表格中表示颜色。它实现了颜色接口。如下列出它的几个方法和构造函数。

Class Constructors

Sr.No.

Constructor & Description

1

XSSFColor() 创建一个新的 XSSFColor 实例。

2

XSSFColor(byte[] rgb) 使用 RGB 创建一个新的 XSSFColor 实例。

3

XSSFColor(java.awt.Color clr) 使用 awt 包中的颜色类创建一个新的 XSSFColor 实例。

Class Methods

Sr.No.

Method & Description

1

setAuto(boolean auto) 设置一个布尔值,以指示 ctColor 是自动的,且系统 ctColor 是依赖的。

2

setIndexed(int indexed) 将索引 ctColor 值设置为系统 ctColor。

XSSFFont

这是一个属于 org.apache.poi.xssf.usermodel 包的类。它实现了字体接口,因此它可以在工作簿中处理不同的字体。

Class Constructor

Sr.No.

Constructor & Description

1

XSSFFont() 创建一个新的 XSSFont 实例。

Class Methods

Sr.No.

Method & Description

1

setBold(boolean bold) 设置“加粗”属性的布尔值。

2

setColor(short color) 设置字体的索引颜色。

3

setColor(XSSFColor color) 在标准 Alpha RGB 颜色值中设置字体的颜色。

4

setFontHeight(short height) 将字体高度设为磅数。

5

setFontName(java.lang.String name) 设置字体的名称。

6

setItalic(boolean italic) 设置“斜体”属性的布尔值。

对于其余方法,请通过以下链接进行 − https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html

这是一个 org.apache.poi.xssf.usermodel 包下的类。它实现了 Hyperlink 接口。它用于设置指向电子表格中单元格内容的超链接。

Class Methods

Sr.No.

Method & Description

1

setAddress(java.lang.String address) Hyperlink address.

XSSFCreationHelper

这是一个 org.apache.poi.xssf.usermodel 包下的类。它实现了 CreationHelper 接口。它用作公式评估和设置超链接的支持类。

Class Methods

Sr.No.

Method & Description

1

createFormulaEvaluator() 创建一个 XSSFFormulaEvaluator 实例,该对象评估公式单元格。

2

createHyperlink(int type) 创建一个新的 XSSFHyperlink。

XSSFPrintSetup

这是一个 org.apache.poi.xsssf.usermodel 包下的类。它实现了 PrintSetup 接口。它用于设置打印页面大小、区域、选项和设置。

Class Methods

Sr.No.

Method & Description

1

setLandscape(boolean ls) 设置布尔值以允许或阻止横向打印。

2

setLeftToRight(boolean ltor) 设置打印时是按左到右还是按从上到下的顺序。

3

setPaperSize(short size) 设置纸张尺寸。