目录
POI (Poor Obfuscation Implementation) 是一个 Java 库,用于处理 Microsoft Office文档,如Excel、Word和PowerPoint。它提供了一组类和方法,使开发人员能够读取、创建和修改这些文档,以及从中提取数据。
POI 主要包括以下几个组件:
HSSF(Horrible Spreadsheet Format):HSSF 是 POI 的子项目,用于处理 Excel 97-2003 格式(.xls 文件)。它允许您读取、创建和修改 Excel 文档,包括工作簿、工作表、单元格、公式等。
XSSF(XML Spreadsheet Format):XSSF 是 POI 的子项目,用于处理 Excel 2007及更高版本的 XLSX 格式(基于XML的文件格式)。它支持读取和写入 XLSX 文件,并提供了对新 Excel 特性的支持。
HWPF(Horrible Word Processor Format):HWPF 是 POI 的子项目,用于处理 Word 97-2003 格式的文档(.doc 文件)。它允许您读取、创建和修改 Word 文档,包括文本、表格、图像等。
XWPF(XML Word Processor Format):XWPF 是 POI 的子项目,用于处理 Word 2007 及更高版本的 DOCX 格式(基于XML的文件格式)。它支持读取和写入 DOCX 文件,包括文本、样式、表格等。
HSLF(Horrible Slide Layout Format):HSLF 是 POI 的子项目,用于处理 PowerPoint 97-2003 格式的演示文稿(.ppt 文件)。它允许您读取、创建和修改 PowerPoint 文档,包括幻灯片、文本、图形等。
XSLF(XML Slide Layout Format):XSLF 是 POI 的子项目,用于处理 PowerPoint 2007 及更高版本的 PPTX 格式(基于XML的文件格式)。它支持读取和写入 PPTX 文件,包括幻灯片、文本、图形等。
使用 POI,您可以执行各种操作,如读取 Excel 文件中的数据、将数据写入 Excel 文件、操作 Word 文档的内容和格式、创建 PowerPoint 演示文稿等。它是一个强大的工具,特别适合需要自动化处理 Office 文档的 Java 应用程序。
使用 POI 的简单示例,用于读取 Excel 文件中的数据:
- import org.apache.poi.ss.usermodel.*;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
-
- public class ExcelReader {
- public static void main(String[] args) {
- try {
- FileInputStream file = new FileInputStream(new File("example.xlsx"));
- Workbook workbook = new XSSFWorkbook(file);
- Sheet sheet = workbook.getSheetAt(0);
-
- for (Row row : sheet) {
- for (Cell cell : row) {
- System.out.print(cell.toString() + "\t");
- }
- System.out.println();
- }
-
- file.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
XSSFWorkbook
是 Apache POI 库中用于操作 Excel 2007及更高版本(.xlsx 格式)文档的类。它是 org.apache.poi.xssf.usermodel.XSSFWorkbook
类的一个实现。XSSFWorkbook
提供了许多方法,用于创建、修改和操作 Excel 工作簿,包括工作表、单元格、样式等。以下是一些常用的 XSSFWorkbook
方法的详解:
构造函数:
XSSFWorkbook()
:创建一个新的空白工作簿。XSSFWorkbook(InputStream is)
:从输入流加载现有的工作簿。XSSFWorkbook(String path)
:从指定文件路径加载现有的工作簿。XSSFWorkbook(OPCPackage pkg)
:使用 OPCPackage
对象创建工作簿,这通常用于高级用途。创建工作表:
XSSFSheet createSheet(String sheetName)
:创建一个新的工作表,并指定工作表的名称。XSSFSheet getSheetAt(int index)
:通过索引获取工作表。XSSFSheet getSheet(String name)
:通过名称获取工作表。工作表操作:
int getNumberOfSheets()
:获取工作簿中的工作表数量。void removeSheetAt(int index)
:删除指定索引处的工作表。XSSFSheet cloneSheet(int sheetIndex)
:克隆工作表。保存工作簿:
void write(OutputStream out)
:将工作簿内容写入输出流,通常用于将工作簿保存到文件。void write(File file)
:将工作簿内容写入指定的文件。void close()
:关闭工作簿,释放资源。样式和格式:
XSSFCellStyle createCellStyle()
:创建一个新的单元格样式。XSSFFont createFont()
:创建一个新的字体对象。short createDataFormat()
:创建一个新的数据格式。日期处理:
void setCreationHelper(CreationHelper createHelper)
:设置工作簿的 CreationHelper,用于日期处理和其他数据类型的转换。密码保护:
void lockStructure()
:锁定工作簿的结构,防止用户对工作表的结构进行更改。void unlockStructure()
:解锁工作簿的结构,允许用户对工作表的结构进行更改。其他:
int getActiveSheetIndex()
:获取当前活动工作表的索引。void setActiveSheet(int sheetIndex)
:设置当前活动工作表的索引。XSSFFormulaEvaluator getCreationHelper().createFormulaEvaluator()
:用于计算公式的创建和计算器。XSSFSheet
是 Apache POI 中用于表示 Excel 工作表的类,通常用于对 Excel 表格的数据进行读取和修改。XSSFSheet
类是 org.apache.poi.xssf.usermodel.XSSFSheet
的实现。以下是一些常用的 XSSFSheet
类的方法和属性:
属性和基本信息:
int getPhysicalNumberOfRows()
: 获取工作表中的物理行数,即非空行的数量。
int getFirstRowNum()
: 获取第一个行的索引,通常为0。
int getLastRowNum()
: 获取最后一个行的索引。
String getSheetName()
: 获取工作表的名称。
行操作:
XSSFRow createRow(int rowIndex)
: 创建一个新的行,指定行的索引。
XSSFRow getRow(int rowIndex)
: 获取工作表中指定行索引的行对象。
void removeRow(XSSFRow row)
: 从工作表中删除指定的行。
void shiftRows(int startRow, int endRow, int n)
:向下或向上移动工作表中的行。
列操作:
int getColumnWidth(int columnIndex)
: 获取指定列的宽度。
void setColumnWidth(int columnIndex, int width)
: 设置指定列的宽度。
工作表的属性:
boolean getDisplayFormulas()
: 获取是否显示公式。
void setDisplayFormulas(boolean show)
:设置是否显示公式。
合并单元格:
void addMergedRegion(CellRangeAddress region)
: 合并单元格区域。
void addMergedRegionUnsafe(CellRangeAddress region)
: 合并单元格区域(不检查冲突)。
void removeMergedRegion(int index)
: 移除合并单元格区域。
保护工作表:
void protectSheet(String password)
: 保护工作表并设置密码。
void unprotectSheet(String password)
: 取消保护工作表,需要提供正确的密码。
页眉和页脚:
Header getHeader()
: 获取工作表的页眉。
Footer getFooter()
: 获取工作表的页脚。
注释:
XSSFRichTextString getSheetComment()
: 获取工作表的注释。
void setSheetComment(XSSFRichTextString comment)
: 设置工作表的注释。
图表:
XSSFDrawing createDrawingPatriarch()
: 创建绘图对象,用于插入图表和图形。数据有效性:
XSSFDataValidationHelper getDataValidationHelper()
: 获取数据有效性帮助器,用于创建数据有效性约束。打印设置:
void setPrintArea(int startColumn, int endColumn, int startRow, int endRow)
: 设置要打印的区域。其它方法:
boolean isSelected()
: 检查工作表是否被选中。
void setSelected(boolean select)
: 设置工作表是否被选中。
XSSFRow
是 Apache POI 中用于表示 Excel 工作表中的行的类,通常用于对 Excel 表格的数据进行读取和修改。XSSFRow
类是 org.apache.poi.xssf.usermodel.XSSFRow
的实现。下面是一些常用的 XSSFRow
类的方法和属性:
属性和基本信息:
int getRowNum()
: 获取行的索引,从0开始。
int getPhysicalNumberOfCells()
: 获取该行的物理单元格数量,即非空单元格的数量。
单元格操作:
XSSFCell createCell(int columnIndex)
: 创建一个新的单元格,指定单元格在行中的列索引。
XSSFCell getCell(int columnIndex)
: 获取行中指定列索引的单元格。
void removeCell(XSSFCell cell)
: 从行中删除指定的单元格。
int getFirstCellNum()
: 获取第一个单元格的列索引。
int getLastCellNum()
: 获取最后一个单元格的列索引,包括空单元格。
设置行高和默认列宽:
void setHeight(short height)
: 设置行的高度(以20分之1个点为单位)。
void setZeroHeight(boolean zHeight)
: 设置行是否为零高度(隐藏行)。
其它方法:
void shiftCellsRight(int firstCellNum, int lastCellNum, int step)
: 将行中指定范围内的单元格向右移动。
void shiftCellsLeft(int firstCellNum, int lastCellNum, int step)
: 将行中指定范围内的单元格向左移动。
void shiftCellsRight(int firstCellNum, int lastCellNum)
: 将行中指定范围内的单元格向右移动一个位置。
void shiftCellsLeft(int firstCellNum, int lastCellNum)
: 将行中指定范围内的单元格向左移动一个位置。
XSSFCell
是 Apache POI 中用于表示 Excel 工作表中单元格的类,通常用于读取和修改 Excel 表格中的数据。XSSFCell
类是 org.apache.poi.xssf.usermodel.XSSFCell
的实现。以下是一些常用的 XSSFCell
类的方法和属性:
获取单元格的内容:
String getStringCellValue()
: 获取单元格中的文本值,无论单元格中的内容是文本、数字、日期或其他数据类型,都会以字符串形式返回。
double getNumericCellValue()
: 获取单元格中的数值(仅适用于数值类型的单元格)。
boolean getBooleanCellValue()
: 获取单元格中的布尔值(仅适用于布尔类型的单元格)。
String getCellFormula()
: 获取单元格中的公式。
设置单元格的内容:
void setCellValue(double value)
: 设置单元格的值为数值。
void setCellValue(String value)
: 设置单元格的值为文本。
void setCellValue(boolean value)
: 设置单元格的值为布尔值。
void setCellFormula(String formula)
: 设置单元格的公式。
单元格样式:
XSSFCellStyle getCellStyle()
: 获取单元格的样式对象,以便修改单元格的样式。
void setCellStyle(XSSFCellStyle style)
: 设置单元格的样式。
单元格类型和属性:
int getCellType()
: 获取单元格的类型,返回常量值(CellType
)。
boolean getBooleanCellValue()
: 获取布尔类型的单元格值。
int getColumnIndex()
: 获取单元格所在的列索引。
单元格注释:
XSSFRichTextString getRichStringCellValue()
: 获取富文本字符串对象(支持格式化文本)。
XSSFRichTextString setCellValue(RichTextString value)
: 设置单元格的富文本字符串值。
单元格格式:
void setCellType(int cellType)
: 设置单元格的类型,可以是 CellType
常量之一。日期格式:
void setCellStyle(CellStyle style)
: 设置单元格的日期格式。公式计算:
void setCellType(CellType cellType)
: 设置单元格的类型,可以是 CellType
常量之一。
void setCellErrorValue(byte errorCode)
: 设置单元格的错误值。
其它方法:
boolean isPartOfArrayFormulaGroup()
: 检查单元格是否属于数组公式组。
void removeCellComment()
: 移除单元格的注释。
使用这些方法,您可以创建、操作和保存 Excel 工作簿,以满足您的需求。