POI-Excel框架结构

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lk142500/article/details/84992504

1 简介

操作Excel文件的高级API(package: org.apache.poi.ss.usermodel)是大多数人所使用的,使用非常简单。

首先创建工作簿WorkBook,通过创建org.apache.poi.ss.usermodel.WorkBook的实例,或者直接创建具体的类型HSSFWorkbook或者XSSFWorkbook,或者使用方便的工厂类org.apache.poi.ss.usermodel.WorkbookFactory

通过调用一个已经存在的Workbook的实例的createSheet()来创建sheet电子表格,被创建的sheet会自动加入到workbook的序列中。Sheet不会自动具有名称(底部的tab);你可以通过调用Workbook.setSheetName(sheetindex, “SheetName”, encoding)来设置关联的电子表格的名称。

通过调用一个已经存在的Sheet的实例的createRow(rowNumber)来创建一个行。只有具有单元格值得行应该被加入到sheet电子表格中。为了设置单元格的高度,可以通过在Row对象上调用setHeight(height),这种方法以twips为单位,如果喜欢也可以通过setHeightInPoints方法。

通过一个已经存在的Row上调用createCell(column, type)可以创建一个单元格。只有具有值得单元格应该被加入一个Row对象中。单元格应该含有值,或者时Cell. CELL_TYPE_NUMERIC, CELL_TYPE_STRING
CELL_TYPE_FORMULA, CELL_TYPE_BLANK, CELL_TYPE_BOOLEAN等类型,取决于它们所具有值得内容。每个单元格没有宽度,宽度的设置可以在Sheet对象上调用setColumnWidth(colindex, width)指定。
单元格Cell可以通过CellStyle类进行风格处理,CellStyle包含了一个指向Font对象的引用。可以通过Workbook对象的createCellStyle()和createFont()得到。一旦你创建了这个对象,你必须设置它的参数,颜色color,边缘border,以及水平和垂直对齐等参数。为一个CellStyle设置字体可以通过调用setFont(fontobj)进行 .

一旦你已经产生了一个workbook对象,就可以把该对象写出来,通过Workbook对象调用write(outputStream),把该对象传递到OutputStream。你必须手动关闭outputStream流。

2 主要构成

2.1 Cell单元格

public interface Cell

在一个电子表格中的一行内单元格的高级表示。

单元格的内容可以是数字的,基于公式的或者基于字符串的(文本)。单元格类型表示这些内容。字符串单元格不能包含数字,并且数值numeric单元格不能包含字符串。用户app应该自己进行这些转换。公式单元格具有公式字符串和公式的结果,结果可以使数值或者字符串。
单元格应该具有它们的序号(基于0),在添加到一行之前。

CellType具有如下值

int CELL_TYPE_NUMERIC = 0;
int CELL_TYPE_STRING = 1;
int CELL_TYPE_FORMULA = 2;
int CELL_TYPE_BLANK = 3;
int CELL_TYPE_BOOLEAN = 4;
int CELL_TYPE_ERROR = 5;

Cell类具有如下属性

Modifier and Type 		Method and Description
CellAddress 			getAddress()
boolean				    getBooleanCellValue()   the value of the cell as a boolean
String				    getCellFormula() 		Return a formula for the cell, SUM(C4: E4)
int 					getColumnIndex()		Returns column index of this cell(zero-based)
CellStyle				getCellStyle()			Return the cell’s style
CellType 				getCellType()			返回单元格类型
java.util.Date			getDateCellValue()		获取单元格的值作为一个日期对象
byte					getErrorCellValue()		获取单元格的值作为一个错误码
double				    getNumericCellValue()	获取单元格的值作为一个数字
Row					    getRow()				返回拥有该单元格的行
int					    getRowIndex()			返回拥有该单元格的电子表格的的行索引
Sheet				    getSheet()				返回单元格所属的sheet电子表格
java.lang.String	    getStringCellValue()		获取单元格的值作为一个string
void 				    removeCellComment()	移除单元格批注,如果有的话
void 				    removeHyperlink()		移除单元格超链接,如果有的话
void 				    setCellComment(Comment comment)	为单元格指派批注
void 				    setCellType(CellType cellType)	为单元格设置风格
void 				    setCellValue(CellType cellType) 设置单元格类型

2.2 Row行

public interface Row extends java.lang.Iterable<Cell>

在电子表格中行的高级表示

在电子表格中行应该具有的属性有该行的索引,该行中一共具有的单元格数目,第一个有内容的单元格索引和最后一个由内容的单元格索引。

嵌套内部类

Nested Classes
Modifier and Type			Interface and Description
static class 				Row.MissingCellPolicy  	对于不存在或空白单元格的情形指定不同的可能策略

对于Row类提供的方法如下:

Modifiter and Type		Method and Description
java.util.Iterator<Cell>	cellIterator()	实际定义的单元格的单元格迭代器
Cell 					createCell(int column, CellType type)	创建新的单元格并返回自身
Cell					createCell(int column)
Cell					getCell(int column)	获取表示指定列的单元格,如果请求未定义的单元格,则返回null
Cell					getCell(int cellnum, Row.MissingCellPolicy policy)
short					getFirstCellNum()    获取在该行中包含的一个单元格序号
short					getHeight()		获取行高单位为1/20像素
float 				   getHeightInPoints()		获取行高,以点的大小为单位
short			    	getLastCellNum()		获取该行中最后单元格的索引+1
int				       	getPhysicalNumberOfCells()	获取定义的单元格的数目,即如果仅有列0、4、5具有值,然后结果为3
int					    getRowNum()			获取行表示的行索引
CellStyle				getRowStyle()			返回整个行的单元格风格
Sheet				    getSheet()				返回该行所属的电子表格
void					removeCell(Cell cell)		从当前行移除单元格
void					setHeight(short height)	setHeightInPoints()	
void					setRowNum(int rowNum)		设置该行的行序号

常见的循环处理单元格的代码片段如下:

short minColIx = row.getFirstCellNum();
short maxColIx = row.getLastCellNum();
for(short colIx=minColIx; colIx<maxColIx; colIx++) {
	Cell cell = row.getCell(colIx);
	if(cell == null) {
		continue;
}
//do something with cell
}

2.3 Sheet电子表格spreadsheet

public interface Sheet extends java.lang.Iterable<Row>

一个Excel的高级表示

Sheet是在workbook工作簿中的核心结构,是一个用户进行多数电子表格工作的地方。最常见的sheet的类型是worksheet,被表示未单元格网。WorkSheet单元格能够包含文本,数字,日期和公式。单元格也可以被格式化。

Modifier and Type	   Method and Description
Row						createRow(int rownum)
Row						getRow(int rownum)   返回基于逻辑上行。如果你请求一个未定义的行,会得到null
int						getPhysicalNumberOfRows()	返回实际定义的行的数目,而不是sheet中的行的数目
int						getFirstRowNum()			获取在表格sheet上的第一行
int 				    getLastRowNum()

3 代码片段
4 总结

展开阅读全文

没有更多推荐了,返回首页