POI(excel)中WorkBook和Sheet应用实践总结

简介: POI(excel)中WorkBook和Sheet应用实践总结

WorkBook定义

工作簿的高级表现形式,是sheet的上级对象。一个excel就是一个工作簿,一个工作簿含有多个工作表(sheet)。

【1】WorkBook两种创建形式

① 使用直接对象

// 03版本  .xls
org.apache.poi.hssf.usermodel.HSSFWorkbook 
or //07版本  .xlsx
org.apache.poi.xssf.usermodel.XSSFWorkbook

示例如下:

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));

② 使用工厂对象

org.apache.poi.ss.usermodel.WorkbookFactory

示例如下:

Workbook workbook = WorkbookFactory.create(file);


参数不只可以为file:

20170621171102272.png

上述是直接读一个excel为workbook对象。也可以创建一个空对象,然后创建sheet,row and cell并写入到一个excel。

示例

FileOutputStream fos = new FileOutputStream(file);
workbook.write(fos);
fos.close();
//写入流
or
//写入文件
workbook.write(file);

同样,可以根据上面两种方式,将修改后的workbood重新刷入读取的原文件。

这里需要注意,一定要手动关闭流。WorkBook不会帮你关闭!

鉴别上传表格的版本–控制文件格式

  • ① 获取文件拓展名,判断是"xls"或者是"xlsx"。
  • ② 获取表格的版本:
hssfWorkbook.getSpreadsheetVersion();

【2】Sheet

workSheet(工作表)的高级表现形式,sheet的索引是从 0 开始。

(1)创建方法

HSSFSheet sheet = hssfWorkbook.createSheet("hello");
//创建的时候指定名字
or
//创建后指定名字
hssfWorkbook.setSheetName(index, sheetName);

根据index 克隆sheet

会同时克隆sheet中的数据,并将克隆的sheet置于工作簿最后次序。

HSSFSheet cloneSheet = hssfWorkbook.cloneSheet(1);

20170622105542736.png

(2)获取sheet name

获取未指定名字的新创建的sheet name:

HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet createSheet = hssfWorkbook.createSheet();
String sheetName = createSheet.getSheetName();

如果未指定名字,那么将会使用"Sheet+index"进行命名。

如果工作表中已经存在了该名字,那么打开Excel会提示异常,点击"是"打开,会发现该sheet名字被重写了。

(3) sheet获取与设置

根据index获取sheet

HSSFSheet sheetAtIndex = hssfWorkbook.getSheetAt(index);

根据sheet获取index

int sheetIndex = hssfWorkbook.getSheetIndex(sheetAtIndex );

根据name获取sheet

HSSFSheet sheet1 = hssfWorkbook.getSheet("Sheet1");

根据name获取index

int sheetIndex = hssfWorkbook.getSheetIndex("Sheet1");

根据index 移除sheet

hssfWorkbook.removeSheetAt(index);
--如果index超出了范围,将会抛出异常。

鉴别(或设置)sheet 隐藏

hssfWorkbook.setSheetHidden(1, true);
//设置index为1的sheet 隐藏
boolean sheetHidden = hssfWorkbook.isSheetHidden(1);
//判断index为1的sheet是否隐藏。

更改sheet 位置(index)

hssfWorkbook.setSheetOrder(sheetname, pos);
// pos 以 0 位基数,其实就是index。

获取workbook和sheet后,就可以对sheet中的row和cell进行读写!

获取workbook 中 sheet的数量

int numberOfSheets = hssfWorkbook.getNumberOfSheets();

获取’活跃状态’ sheet index

int activeSheetIndex = hssfWorkbook.getActiveSheetIndex();

gets the tab whose data is actually seen when the sheet is opened.

This may be different from the “selected sheet” since excel seems to allow you to show the data of one sheet when another is seen “selected” in the tabs (at the bottom).

根据index设置’活跃状态’ sheet

hssfWorkbook.setActiveSheet(index);

Excel默认打开第一个sheet。如下所示,设置之后将直接打开第二个sheet:

hssfWorkbook.setActiveSheet(1);

20170622102225071.png

注意与"selected Tab区别"。Active表示你打开工作簿看到的数据所在的sheet ,而 “selected Tab” 表示处于选定状态的tab–显示sheet name的地方。


二者并不冲突,默认情况下, “selected Tab” 随 Active sheet。即,设置sheet为Action,将会默认设置为selected。

如下图所示,selected Tab index 为1 2 3;显示数据 index 为 1:



20170622104323658.png

(4) tab的选取

根据index设置选定Tab

  hssfWorkbook.setSelectedTab(index);

根据collection 设置选定Tab

int[] ints = {1,2,3};
hssfWorkbook.setSelectedTabs(ints);

20170622104104658.png

获取选定状态的Tab

Collection<Integer> selectedTabs = hssfWorkbook.getSelectedTabs();


目录
相关文章
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
652 6
|
Python
pandas 生成 Excel 时的 sheet 问题
pandas 生成 Excel 时的 sheet 问题
486 1
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
3031 0
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
2092 0
|
Python
Python:Pandas实现批量删除Excel中的sheet
Python:Pandas实现批量删除Excel中的sheet
659 0
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
1520 1
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
|
9月前
|
Python
如何根据Excel某列数据为依据分成一个新的工作表
在处理Excel数据时,我们常需要根据列值将数据分到不同的工作表或文件中。本文通过Python和VBA两种方法实现该操作:使用Python的`pandas`库按年级拆分为多个文件,再通过VBA宏按班级生成新的工作表,帮助高效整理复杂数据。
|
9月前
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
11月前
|
存储 安全 大数据
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!
下一篇
开通oss服务