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();


目录
相关文章
|
7月前
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
194 6
|
9月前
|
Python
pandas 生成 Excel 时的 sheet 问题
pandas 生成 Excel 时的 sheet 问题
129 1
|
8月前
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
2141 0
|
8月前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
884 0
|
9月前
|
Python
Python:Pandas实现批量删除Excel中的sheet
Python:Pandas实现批量删除Excel中的sheet
327 0
|
12月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
826 1
|
12月前
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
|
6月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
979 10
|
25天前
|
存储 安全 大数据
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!
|
8月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
470 4

热门文章

最新文章