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


目录
相关文章
|
4月前
|
文字识别
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
该软件是一款OCR身份证识别工具,能批量处理图片,自动提取身份证信息并导出为Excel。支持百度网盘和腾讯云盘下载。用户界面直观,操作简单,适合新手。识别过程包括:打开图片、一键识别、导出结果。特别注意,此程序仅适用于身份证识别,不适用于其他类型的图片识别。
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
|
3月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
259 1
|
3月前
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
|
4月前
【POI】常用excel操作方法
【POI】常用excel操作方法
53 1
|
4月前
|
Java Apache 索引
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
729 0
|
1月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
31 0
|
19天前
|
数据采集 存储 数据挖掘
使用Python读取Excel数据
本文介绍了如何使用Python的`pandas`库读取和操作Excel文件。首先,需要安装`pandas`和`openpyxl`库。接着,通过`read_excel`函数读取Excel数据,并展示了读取特定工作表、查看数据以及计算平均值等操作。此外,还介绍了选择特定列、筛选数据和数据清洗等常用操作。`pandas`是一个强大且易用的工具,适用于日常数据处理工作。
|
1月前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
|
1月前
|
存储 Java Apache
|
1月前
|
数据可视化 Python
我是如何把python获取到的数据写入Excel的?
我是如何把python获取到的数据写入Excel的?
37 2