- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用POI HSSF理EXCEL表格
用POI HSSF处理EXCEL表格
POI的主页:/poi
POI HSSF的Quick Guide,教初学者如何快速上手使用POI HSSF:
/poi/hssf/quick-guide.html
笔者据使用经验以为:POI HSSF是当今市面上最强大的处理EXCEL表格的java工具,比韩国人写的那个JExcelApi或其它几种工具都要好。而且它是Apache的开源项目。当然POI HSSF也有缺点:不能直接支持EXCEL图表,API文档粗糙简略,有些类和方法需要引用Apache项目中的其它一些包,包与包之间依赖关系比较复杂等等。
本文内容不在于提供一个POI HSSF 的完整使用指南(上面那个Apache主页上的Quick Guide已经非常详细),而是列出一些笔者在项目开发过程中找到的一些技巧、经验。
下图是定义的模板PoiTest.xls:
通过POI生成的最终结果:
单元格中的数据发生变化时,图表中的柱状、折线也会跟着变化)
处理图表
目前POI版本为2.5.1,org.apache.poi.hssf.usermodel包里有一个HSSFChart类,里面只有一个空方法createBarChart ,表明POI还不直接支持EXCEL图表。
替代方法还是有的:因为EXCEL图表的源数据引用自EXCEL单元格。我们可以先新建一个EXCEL工作薄,作为模板,在里面创建图表,指定它引用工作表中的一些特定单元格。然后我们用POI来读取这个工作薄,把数据写入到那些特定单元格。
首先要在模板里创建可以动态引用单元格的“名称”,利用“名称”来创建图表中的“系列”。
一、打开模板PoiTest.xls,点击[插入] [名称] [定义],创建四个“名称”sx,s1y,s2y,s3y:
sx OFFSET Sheet1!$A$17,0,2,1,COUNTA Sheet1!$17:$17 -4
s1y OFFSET Sheet1!$A$18,0,2,1,COUNTA Sheet1!$18:$18 -4
s2y OFFSET Sheet1!$A$19,0,2,1,COUNTA Sheet1!$19:$19 -3
s3y OFFSET Sheet1!$A$20,0,2,1,COUNTA Sheet1!$20:$20 -3
这里用到了两个EXCEL函数,OFFSET 和COUNTA 函数。
其中COUNTA()可以返回一行或一列的单元格总数:
比如COUNTA Sheet1!$A:$A ,计算工作表Sheet1的A列的单元格数目。
又比如COUNTA Sheet1!$17:$17 ,计算的是Sheet1的第17行的单元格数目。
当我们没有在单元格里键入数据时,该单元格是不会被COUNTA 计算的。
OFFSET 函数用来引用一系列连续的单元格,它共有五个参数:
参数一,作为位置参照的单元格。
参数二,行的起始偏移量(以参数一为参照)。
参数三,列的起始偏移量(以参数一为参照)。
参数四,跨行数。
参数五,跨列数。
比如:
OFFSET Sheet1!$A:$1,1,2,3,4 ,表示引用范围为:C2:F4。
二、在模板中创建图表,在图表上点右键,选择[源数据] [系列],如图建立三个系列:
点[添加]创建新的系列:
[名称]表示系列名,可以直接输入字串,也可以引用EXCEL单元格。
在[值]中输入我们在上一步中创建的“名称”,格式为:模板名.xls!名称。
在[分类 X 轴标志 T ]中输入我们在上一步中创建的“名称”sx,格式为:模板名.xls!名称。它表示图表区域的X轴将要显示的内容。
三、用POI把数据写入到相应的单元格中,图表将会自动显示对应的信息。
注意:
上面这种方法适用数据集合行数固定而列数动态变化的情况。
对于行数也动态变化的情况,只能先在模板里预设尽可能多的“名称”和“系列”。
对于行数和列数都固定的情形,没必要这么复杂,只要在图表的[源数据]里设置[数据区域],使之引用EXCEL模板中的一定范围,如下图:
设置单元格样式
HSSFCellStyle类代表一种单元格样式。可以通过这个类来设置单元格的边框样式、背景颜色、字体、水平和垂直对齐方式等等。
HSSFCellStyle titleStyle workbook.createCellStyle ;??titleStyle.setBorderBottom HSSFCellStyle.BORDER_DOUBLE ;??titleStyle.setBorderLeft short 1 ;??titleStyle.setBorderRight short 1 ;??titleStyle.setBorderTop HSSFCellStyle.
您可能关注的文档
最近下载
- 湘少版2025年三年级春季学期英语阅读理解真题.pdf VIP
- 乘着歌声的翅膀降A调正谱伴奏.pdf VIP
- 游戏开发与游戏运营的策划技巧.docx VIP
- (正式版)H-Y-T 147.1-2013 海洋监测技术规程 第1部分:海水(正式版).docx VIP
- 中央八项规定精神相关解读.ppt VIP
- 通用学术英语1(张敬源)课后习题答案.docx VIP
- (统编2024版)语文八年级上册第三单元解读课件(新教材).pptx
- 河南安阳红色文化传承模式研究.pptx VIP
- 人教PEP版(2024)三年级上册英语全册教案(单元整体教学设计) .pdf
- 加快建设教育强国、科技强国、人才强国PPT课件 .pptx VIP
原创力文档


文档评论(0)