转自:https://blog.csdn.net/j080624/article/details/73551070

【1】WorkBook定义

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


【2】WorkBook两种创建形式

① 使用直接对象

org.apache.poi.hssf.usermodel.HSSFWorkbook
or
org.apache.poi.xssf.usermodel.XSSFWorkbook
  • 1
  • 2
  • 3

示例如下:

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

② 使用工厂对象

org.apache.poi.ss.usermodel.WorkbookFactory
  • 1

示例如下:

Workbook workbook = WorkbookFactory.create(file);
  • 1

参数不只可以为file:

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

示例如下:

FileOutputStream fos = new FileOutputStream(file);
workbook.write(fos);
fos.close();
//写入流
or
//写入文件
workbook.write(file);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

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


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

① 获取文件拓展名,判断是”xls”或者是”xlsx”。

② 获取表格的版本:

hssfWorkbook.getSpreadsheetVersion();
  • 1

【3】Sheet

workSheet(工作表)的高级表现形式。

  • (1)创建方法:
HSSFSheet sheet = hssfWorkbook.createSheet("hello");
//创建的时候指定名字or//创建后指定名字
hssfWorkbook.setSheetName(index, sheetName);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

|

  • (1.1) 根据index 克隆sheet

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

HSSFSheet cloneSheet = hssfWorkbook.cloneSheet(1);
  • 1


  • (2)index:

sheet的索引是从 0 开始。


  • (3)获取未指定名字的新创建的sheet name:
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet createSheet = hssfWorkbook.createSheet();
String sheetName = createSheet.getSheetName();
  • 1
  • 2
  • 3

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

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


  • (4)根据index获取sheet
HSSFSheet sheetAtIndex = hssfWorkbook.getSheetAt(index);
  • 1
  • (4.1)根据sheet获取index
int sheetIndex = hssfWorkbook.getSheetIndex(sheetAtIndex );
  • 1

  • (5)根据name获取sheet
HSSFSheet sheet1 = hssfWorkbook.getSheet("Sheet1");
  • 1
  • (5.1)根据name获取index
int sheetIndex = hssfWorkbook.getSheetIndex("Sheet1");
  • 1

  • (6)获取workbook 中 sheet的数量
int numberOfSheets = hssfWorkbook.getNumberOfSheets();默认为3
  • 1
  • 2
  • 3

  • (7)获取’活跃状态’ sheet index
int activeSheetIndex = hssfWorkbook.getActiveSheetIndex();
  • 1

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).

  • (7.1)根据index设置’活跃状态’ sheet
hssfWorkbook.setActiveSheet(index);
  • 1

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

hssfWorkbook.setActiveSheet(1);
  • 1

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

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

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

  • (7.2) 根据index设置选定Tab
    hssfWorkbook.setSelectedTab(index);
  • 1
  • (7.3)根据collection 设置选定Tab
int[] ints = {1,2,3};
hssfWorkbook.setSelectedTabs(ints);
  • 1
  • 2

  • (7.4)获取选定状态的Tab
Collection<Integer> selectedTabs = hssfWorkbook.getSelectedTabs();
  • 1

  • (8) 根据index 移除sheet
hssfWorkbook.removeSheetAt(index);--如果index超出了范围,将会抛出异常。
  • 1
  • 2
  • 3

  • (9)鉴别(或设置)sheet 隐藏
hssfWorkbook.setSheetHidden(1, true);//设置index为1的sheet 隐藏boolean sheetHidden = hssfWorkbook.isSheetHidden(1);//判断index为1的sheet是否隐藏。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

  • (10)更改sheet 位置(index)
hssfWorkbook.setSheetOrder(sheetname, pos);// pos 以 0 位基数,其实就是index。
  • 1
  • 2
  • 3

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

POI(excel) - WorkBook和Sheet相关推荐

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

    WorkBook定义 工作簿的高级表现形式,是sheet的上级对象.一个excel就是一个工作簿,一个工作簿含有多个工作表(sheet). [1]WorkBook两种创建形式 ① 使用直接对象 // ...

  2. java poi row cell,使用POI进行Excel操作的总结一——创建Workbook,Sheet,Row以及Cell

    前段时间,看在其他的网站上给出Excel文档的导入与导出操作,感觉很酷的样子,所以就学习了一下如何使用POI进行Excel的操作,现在对之前的学习过程进行一个总结. 一.现在普遍使用的Excel文档有 ...

  3. 使用POI进行Excel操作的总结一——创建Workbook,Sheet,Row以及Cell

    转自大牛:https://www.cnblogs.com/jiang2016/p/5728102.html 前段时间,看在其他的网站上给出Excel文档的导入与导出操作,感觉很酷的样子,所以就学习了一 ...

  4. Excel导出多sheet单sheet通用型(poi)

    导出背景: 1.Activity 活动 → Coupon 优惠券    1: N 2.List<Activity>.List<ActivityDto> List<Coup ...

  5. java poi 只能创建?,JAVA POI创建多个sheet的Excel文件,及多个sheet也创建失败原因

    最近写一个生成多个sheet页的表格,正好遇到了sheet只有一个的问题,拿出来跟大家分享下 解决问题直接下拉! import java.io.IOException; import java.uti ...

  6. Java Excel 复制单元格 poi Excel 复制单元格 Java Excel 复制行 Java Excel 复制 sheet 页 poi excel copy

    Java Excel 复制单元格 poi Excel 复制单元格 Java Excel 复制行 Java Excel 复制 sheet 页 一.前言 1.本文记录 poi excel 实现 单元格ce ...

  7. Poi 导出excel多个sheet的内容

    Poi 导出excel多个sheet的内容 目录 Poi 导出excel多个sheet的内容 代码: Contrller Service: 导出引用:ExcelExportUtil 导出类:PoiMu ...

  8. poi操作excel,复制sheet,复制行,复制单元格

    项目中,我们经常使用Poi来操作excel,但是经常碰到一个不方便的地方,不如最简单常用的,在两个excel之间复制sheet,复制行,复制单元格等. 我这里是最近刚做的一个简单封装.不是很好,必须始 ...

  9. poi操作excel,复制sheet,复制行,复制单元格 .

    http://blog.csdn.net/wutbiao/article/details/8696446 项目中,我们经常使用Poi来操作excel,但是经常碰到一个不方便的地方,不如最简单常用的,在 ...

最新文章

  1. 多行字符串,带有多余的空格(保留缩进)
  2. [家里蹲大学数学杂志]第427期与反对称矩阵有关的一个行列式
  3. Ember 3.9 发布,3.8 升级为 LTS
  4. 第一个python命令
  5. 远离盛行道德绑架的团队
  6. 【数据库】MySQL创建视图(CREATE VIEW)
  7. ASP.NET Core on K8S学习初探(1)
  8. JDBC –模拟序列
  9. 前端学习(1875)vue之电商管理系统电商系统之vue代码提交到码云
  10. Shell基本命令汇总
  11. 准备-上机考试-华为
  12. Theory and tools for the conversion of analog to spiking convolutional neural networks
  13. asp分页类--添加支持重写功能
  14. ortools解决tsp_ortools系列:后话
  15. Hive几种导出数据方式
  16. java 模拟get post请求_[Java] 模拟HTTP的Get和Post请求
  17. 石家庄地铁(李秦,王学云)2
  18. 破解Photoshop cs6
  19. tspl 重置打印机命令_命令行添加删除打印机
  20. <<视觉问答>>2021:Check It Again: Progressive Visual Question Answering via Visual Entailment

热门文章

  1. java替换图片内容
  2. PHP程序员要看的书单 转自http://www.cnblogs.com/piwefei/p/6900491.html
  3. python font字体样式_Python Svgwrite和字体样式/大小
  4. 小白也有大厂梦,如何从零开始掌握高薪Java工程师必备技能?
  5. iOS最新申请DUNS(邓白氏)详细过程,iOS开发者申请DUNS(邓白氏)相关细节,申请DUNS(邓白氏)的方法...
  6. 疯狂 java轻量级框架_ViewModel从未如此清爽 - 轻量级WPF MVVM框架Stylet
  7. 面试官:说说 typeof 与 instanceof 区别?
  8. —— 监控系统防雷接地 ——
  9. 1、互联网核心岗位缩写
  10. 第七篇(下),MPC工程化总结