Apache POI HSSF and SSF 快速指南 帮助 API poi.docx
- 文档编号:24392284
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:18
- 大小:21.52KB
Apache POI HSSF and SSF 快速指南 帮助 API poi.docx
《Apache POI HSSF and SSF 快速指南 帮助 API poi.docx》由会员分享,可在线阅读,更多相关《Apache POI HSSF and SSF 快速指南 帮助 API poi.docx(18页珍藏版)》请在冰豆网上搜索。
ApachePOIHSSFandSSF快速指南帮助APIpoi
ApachePOIHSSFandXSSF快速指南帮助文档API
ApachePOIHSSFandXSSF快速指南帮助文档API
参考版本为:
代码测试所用软件:
NetBeans希望对大家有所帮助
提示:
测试代码需要导入poi的全部以jar结尾的文件,导入到库中
2016/10/18Tuesday
1、如何创建一个新的Workbook
Workbookwb=newHSSFWorkbook();
FileOutputStreamfileOut=newFileOutputStream("");
(fileOut);
();
Workbookwb=newXSSFWorkbook();
FileOutputStreamfileOut=newFileOutputStream("");
(fileOut);
();
2、如何创建一个表
Workbookwb=newHSSFWorkbook();etCellValue;
(2).setCellValue(
("Thisisastring"));
(3).setCellValue(true);
etFormat("m/d/yyh:
mm"));
cell=
(1);
(newDate());
(cellStyle);
etCellValue;
(1).setCellValue(newDate());
(2).setCellValue());
(3).setCellValue("astring");
(4).setCellValue(true);
(5).setCellType;
lsHSSFWorkbook或.xlsxXSSFWorkbook)时,可以从文件或InputStream加载Workbook。
使用File对象允许较低的内存消耗,而InputStream需要更多的内存,因为它必须缓冲整个文件。
如果使用WorkbookFactory,很容易使用一个或另一个:
..
();
..
();
..
();
10、对齐单元格
publicstaticvoidmain(String[]args)throwsException{
Workbookwb=newXSSFWorkbook();.)
设置关于形状的任何其他样式细节。
(例如:
线厚度等)
HSSFPatriarchpatriarch=();
a=newHSSFClientAnchor(0,0,1023,255,(short)1,0,(short)1,0);
HSSFSimpleShapeshape1=(a1);
;
文本框使用不同的调用创建:
HSSFTextboxtextbox1=(
newHSSFClientAnchor(0,0,0,0,(short)1,1,(short)2,2));
(newHSSFRichTextString("Thisisatest"));
可以使用不同的字体来对文本框中的文本部分进行样式。
方法如下
HSSFFontfont=();
(true);
;
HSSFRichTextStringstring=newHSSFRichTextString("Woo!
!
!
");
(2,5,font);
(string);
正如可以使用Excel手动完成,可以将形状组合在一起。
这是通过调用createGroup(),然后使用这些组创建形状。
也可以在组内创建组。
警告
您创建的任何组都应至少包含两个其他形状或子组。
以下是创建形状组的方法:
etAnchor((short)3,3,500,500);
HSSFSimpleShapeshape2=(newHSSFChildAnchor((short)1,200,400,600));
;
如果你在观察,你会注意到添加到组的形状使用一种新类型的锚点:
HSSFChildAnchor。
会发生什么,
创建的组具有它自己的坐标空间用于放置在其中的形状。
POI默认为(0,0,1023,255),但您可以根据需要更改它。
方法如下:
(10,10,20,20);reateCell((short)0).setCellValue(cvalue);
用areareference为单个单元格创建命名范围
NamenamedCell=();
(cname);
Stringreference=sname+"!
A1:
A1";用cellreference创建单个单元格的命名范围
NamenamedCel2=();
(cname);
Stringreference=sname+"!
A1";使用AreaReference为区域创建命名范围
NamenamedCel3=();
(cname);
Stringreference=sname+"!
A1:
C5";创建命名公式
NamenamedCel4=();
("my_sum");
("SUM(sname+!
$I$2:
$I$6)");
从命名范围/命名单元格读取
etSheetName());
Rowr=(crefs[i].getRow());
Cellc=(crefs[i].getCol());
etAllReferencedCells()获取所有单元格)
CellReference[]crefs=arefs[i].getCells();
for(intj=0;j<;j++){
etSheetName());
Rowr=(crefs[j].getRow());
Cellc=(crefs[j].getCol());
etColumn((short)1);
Commentcomment=();
if(comment!
=null){
RichTextStringstr=();
Stringauthor=();
}
etString());
}
35、如何调整列宽以适合内容
Sheetsheet=(0);
(0);ormatAsString());
}
}
etCell((short)0);
Hyperlinklink=();
if(link!
=null){
}
如何创建超链接
Workbookwb=newXSSFWorkbook();reateCell((short)0);
("URLLink");
Hyperlinklink=;
("");
(link);
(hlink_style);
reateCell((short)0);
("FileLink");
link=;
("");
(link);
(hlink_style);
reateCell((short)0);
("EmailLink");
link=;
reateCell((short)0).setCellValue("TargetCell");
cell=(3).createCell((short)0);
("WorksheetLink");
Hyperlinklink2=;
("'TargetSheet'!
A1");
(link2);
(hlink_style);
FileOutputStreamout=newFileOutputStream("");
(out);
();
37、数据验证
从版本开始,POI与使用.xls和.xlsx格式的数据验证工作略有不同。
(binary.xlsformat)
检查用户针对一个或多个预定义值输入单元格的值。
以下代码将用户可以输入单元格A1的值限制为三个整数值(10,20或30)之一。
HSSFWorkbookworkbook=newHSSFWorkbook();
HSSFSheetsheet=("DataValidation");
CellRangeAddressListaddressList=newCellRangeAddressList(
0,0,0,0);
DVConstraintdvConstraint=(
newString[]{"10","20","30"});
DataValidationdataValidation=newHSSFDataValidation
(addressList,dvConstraint);
(true);
(dataValidation);
下拉列表:
此代码将执行相同操作,但向用户提供一个下拉列表以从中选择值。
HSSFWorkbookworkbook=newHSSFWorkbook();
HSSFSheetsheet=("DataValidation");
CellRangeAddressListaddressList=newCellRangeAddressList(
0,0,0,0);
DVConstraintdvConstraint=(
newString[]{"10","20","30"});
DataValidationdataValidation=newHSSFDataValidation
(addressList,dvConstraint);
(false);
(dataValidation);
错误消息:
创建一个消息框,如果用户输入的值无效,则会显示给用户。
("BoxTitle","MessageText");
将“框标题”替换为您要在消息框的标题栏中显示的文本,将“消息文本”替换为错误消息的文本。
提示:
创建用户在包含数据验证的单元格接收焦点时将看到的提示
("Title","MessageText");
(true);
封装在传递给createPromptBox()方法的第一个参数中的文本将显示为加粗,并作为提示的标题,而第二个参数将显示为消息的文本。
createExplicitListConstraint()方法可以传递和包含字符串,浮点数,日期或文本值的字符串数组。
更多数据验证:
要获得将检查输入值的验证,例如,为10到100之间的整数,请使用(int,int,String,String)工厂方法。
dvConstraint=(
"10","100");
查看其他验证和操作符类型的javadoc;还要注意,并非所有验证类型都支持此方法。
传递给两个String参数的值可以是公式;'='符号用于表示公式
dvConstraint=(
"=SUM(A1:
A3)","100");
如果调用createNumericConstraint()方法,则不可能创建一个下拉列表,setSuppressDropDownArrow(false)方法调用将被忽略。
可以通过调用createDateConstraint(int,String,String,String)或createTimeConstraint(int,String,String)来创建日期和时间约束。
两者都非常类似于上面的和解释在javadoc。
从电子表格单元格创建数据验证。
特定单元格的内容可用于提供数据验证的值,而(String)方法支持此操作。
要指定值来自连续单元格范围,请执行以下任一操作:
dvConstraint=("$A$1:
$A$3");
or
NamenamedRange=();
("list1");
("$A$1:
$A$3");
dvConstraint=("list1");
并且在这两种情况下,用户将能够从包含来自单元格A1,A2和A3的值的下拉列表中进行选择。
数据不必作为数据验证。
然而,要从不同的工作表中选择数据,表单在创建时必须给出一个名称,并且该名称应在公式中使用。
因此,假设存在一个名为“数据表”的工作表:
NamenamedRange=();
("list1");
("'DataSheet'!
$A$1:
$A$3");
dvConstraint=("list1");
如下:
dvConstraint=("'DataSheet'!
$A$1:
$A$3");
而这不会:
NamenamedRange=();
("list1");
("'Sheet1'!
$A$1:
$A$3");
dvConstraint=("list1");
也不会这样:
dvConstraint=("'Sheet1'!
$A$1:
$A$3");
(.xlsx格式)
当您创建基于xml的SpreadsheetML,Workbook文件时,数据验证的工作方式类似;但有差异。
显式转换是必需的,例如,在几个地方,因为许多对xssf流中的数据验证的支持被内置到统一的ss流中,稍后更多。
其他差异在代码中注释注释。
检查用户针对一个或多个预定义值输入单元格的值。
XSSFWorkbookworkbook=newXSSFWorkbook();
XSSFSheetsheet=(“DataValidation”);
XSSFDataValidationHelperdvHelper=newXSSFDataValidationHelper(sheet);
XSSFDataValidationConstraintdvConstraint=(XSSFDataValidationConstraint)
(newString[]{“11”,“21”,“31”});
CellRangeAddressListaddressList=newCellRangeAddressList(0,0,0,0);
XSSFDataValidationvalidation=(XSSFDataValidation)(
dvConstraint,addressList);
..
然而,这打开了另一个有趣的机会,并且是将用于验证的所有数据放置在Workbook内的隐藏表格上的命名的单元格范围中。
这些范围然后可以在setRefersToFormula()方法参数中显式标识。
包中的类允许开发人员创建可用于生成二进制(.xls)和SpreadsheetML(.xlsx)Workbook的代码。
用于创建数据验证的技术与上面的示例有很多共同之处。
因此,在这里只给出一个或两个例子。
检查用户针对一个或多个预定义值输入单元格的值。
Workbookworkbook=newXSSFWorkbook();.....));
Sheet=(0);
迭代器
while()){
Rowrow=();
if()){
(false);
}
}
如果现在将文件保存到光盘,则Workbook第一页上的任何以前隐藏的行现在将可见。
该示例说明了两个功能。
首先,可以通过调用setZeroHeight()方法并传递布尔值“false”来取消隐藏行。
其次,它说明了如何测试行是否隐藏。
只需调用getZeroHeight()方法,如果行隐藏则返回'true',否则返回'false'。
42、设置单元格属性
有时,创建具有基本样式的电子表格然后对特定单元格应用特殊样式(例如围绕单元格范围绘制边框或为区域设置填充)更容易或更有效。
允许你这样做,而不在你的电子表格中创建一堆不必要的中间样式。
属性作为Map创建,并以以下方式应用于单元格。
Workbookworkbook=newXSSFWorkbook();//ORnewHSSFWorkbook()
Sheetsheet=(“Sheet1”);
Map
//在单元格周围边框
;
;
;
;
//给它一个颜色(RED)
,,,//将边框应用到B2上的单元格
rowrow=
(1);
cellcell=
(1);
(cell,properties);
?
//将边框应用于从D4开始的3x3区域
for(intix=3;ix<=5;ix++){
row=(ix);
for(intiy=3;iy<=5;iy++){
cell=(iy);
(cell,properties);
}
}
注意:
这不会替换单元格的属性,它会将您已放入地图的属性与单元格的现有样式属性合并。
如果某个属性已存在,则它将替换为新属性。
如果属性不存在,则将其添加。
此方法不会删除CellStyle属性。
43、绘图边框
在Excel中,可以按下按钮,在整个Workbook区域上应用一组边框。
PropertyTemplate对象通过定义为允许绘制单元格范围顶部,底部,左,右,水平,垂直,内部,外部或所有边框的方法和常量来模拟此。
其他方法允许将颜色应用到边框。
它的工作原理是这样的:
您创建一个PropertyTemplate对象,它是您要应用于工作表的边框的容器。
然后向PropertyTemplate添加边框和颜色,最后将其应用于您需要该组边框的任何工作表。
您可以创建多个PropertyTemplate对象并将它们应用于单个工作表,也可以将同一个PropertyTemplate对象应用于多个工作表。
它就像一张预印纸。
枚举:
BorderStyle
定义边框的外观,是厚还是薄,实线或虚线,单边或双边。
此枚举取代已弃用的常量。
PropertyTemplate不支持旧样式的BORDER_XXXXX常量。
的特殊值将在应用后从单元格中删除边框。
BorderExtent
描述BorderStyle将应用于的区域的部分。
例如,TOP,BOTTOM,INSIDE或OUTSIDE。
的特殊值将从PropertyTemplate中删除边框。
应用模板时,将不会对属性模板中不存在边框属性的单元格边框进行更改。
//绘制边框(三个3x3网格)
PropertyTemplatept=newPropertyTemplate();
//#1)这些边框都将是默认颜色
(newCellRangeAddress(1,3,1,3),
//#2)这些单元格将有外部边界和薄内边界
(newCellRangeAddress(5,7,1,3),
(newCellRangeAddress(5,7,1,3),,
//#3)这些单元格都将是中等重量的不同颜色的
//外部,内部水平和内部垂直边框。
中心
//cell将没有边框。
(newCellRangeAddress(9,11,1,3),
(newCellRangeAddress(9,11,1,3),
(newCellRangeAddress(9,11,1,3),
(newCellRangeAddress(10,10,2,2),
//将边框应用到工作表
Workbookwb=newXSSFWorkbook();
sheetsh=(“Sheet1”);
(sh);
注意:
最后一个()调用使用从该范围中删除边框。
与setCellStyleProperties类似,applyBorders方法合并单元格样式的属性,因此,只有当它们由其他内容替换时,
才会更改现有边框,或者仅当它们被替换时才会删除。
要从边框中删除颜色,请使用。
此外,要从PropertyTemplate对象中删除边框或颜色,请使用。
这不适用于对角线边界。
44、创建数据透视表
数据透视表是电子表格文件的一个强大功能。
您可以使用以下代码段创建数据透视表。
XSSFWorkbookwb=newXSSFWorkbook();
XSSFSheetsheet=();
//创建一些数据来构建数据透视表
setCellData(sheet);
XSSFPivotTablepivotTable=(newAreaReference(“A1:
D4”),newCellReference(“H5”));
//配置数据透视表
//使用第一列作为行标签
(0);
//总结第二列
1);
//将第三列设置为过滤器
2);
//在第四列添加过滤器
(3);
?
45、具有多种样式的单元格(富文本字符串)
要将一组文本格式(颜色,样式,字体等)应用于单元格,应该为Workbook创建CellStyle,然后应用于单元格。
//HSSF示例
HSSFCellhssfCell=(idx);
//富文本包含两个运行
HSSFRichTextStringrichString=newHSSFRichTextString(“Hello,World!
”);
(0,6,font1);
(6,13,font2);
(richString);
//XSSF示例
XSSFCellcell=
(1);
XSSFRichTextStringrt=newXSSFRichTextString(“Thequickbrownfox”);
XSSFFontfont1=();
(true);
(newXSSFColor(new(0,10,font1);
XSSFFontfont2=();
(true);
;
(newXSSFColor(new(10,19,font2);
XSSFFontfont3=();
(newXSSFColor(new(“Jumpedoverthelazydog”,font3);
(rt);
?
要对单元格的不同部分应用不同的格式,您需要使用RichTextString,它允许对单元格内的文本部分进行样式化。
HSSF和XSSF之间有一些细微差别,特别是在字体颜色(两种格式内部存储颜色差异)方面,有关详细信息,请参阅HSSFRichTextString和XSSFRichTextStringjavadoc。
46、使用方便的函数
方便的函数提供了实用的工具功能,例如在合并区域周围设置边框和更改样式属性,而不显式创建新样式
Workbookwb=newHSSFWorkbook();//ornewXSS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Apache POI HSSF and SSF 快速指南 帮助 API 快速 指南