在Java中使用Apache POI导入导出Excel(六)

news2024/12/26 20:07:00

本文将继续介绍POI的使用,上接在Java中使用Apache POI导入导出Excel(五)

使用Apache POI组件操作Excel(六)

43、隐藏和取消隐藏行

使用 Excel,可以通过选择该行(或行)来隐藏工作表上的行, 右键单击鼠标右键,然后从出现的弹出菜单中选择 'Hide'。

要使用 POI 进行模拟,只需在 XSSFRow 或 HSSFRow(该方法在两个类都实现的 ss.usermodel.Row 接口上定义),如下所示:

Workbook workbook = new XSSFWorkbook(); 

Sheet sheet = workbook.createSheet(0);

Row row = workbook.createRow(0);

row.setZeroHeight();

如果现在将文件保存到光盘中,则第一个工作表上的第一行将不可见。

使用 Excel,可以通过选择上面的行和下面的行来取消隐藏以前隐藏的行 隐藏的那个,然后按住 Ctrl 键、Shift 和按 数字 9 然后再发布它们。

要使用 POI 模拟此行为,请执行以下操作:

Workbook workbook = WorkbookFactory.create(new File(.......));
Sheet = workbook.getSheetAt(0);

Iterator<Row> row Iter = sheet.iterator();

while(rowIter.hasNext()) {
  Row row = rowIter.next();

  if(row.getZeroHeight()) {
    row.setZeroHeight(false);
  }
}

如果现在将文件保存到光盘中,则工作簿的第一个工作表上以前隐藏的任何行现在都将可见。

该示例说明了两个功能。首先,只需调用 setZeroHeight() 即可取消隐藏一行 方法并传递布尔值 'false'。其次,它说明了如何测试行是否被隐藏。 只需调用 getZeroHeight() 方法,如果该行被隐藏,它将返回 'true',否则返回 'false'。

44、设置单元格属性

有时,创建具有基本样式的电子表格,然后将特殊样式应用于某些单元格会更容易或更高效 例如,在单元格区域周围绘制边框或设置区域的填充。CellUtil.setCellProperties 允许您在不创建 电子表格中一堆不必要的中间样式。

属性将创建为 Map,并按以下方式应用于单元格。


Workbook workbook = new XSSFWorkbook(); 

Sheet sheet = workbook.createSheet("Sheet1");

Map<String, Object> properties = new HashMap<String, Object>();

// border around a cell
properties.put(CellUtil.BORDER_TOP, BorderStyle.MEDIUM);
properties.put(CellUtil.BORDER_BOTTOM, BorderStyle.MEDIUM);
properties.put(CellUtil.BORDER_LEFT, BorderStyle.MEDIUM);
properties.put(CellUtil.BORDER_RIGHT, BorderStyle.MEDIUM);

// Give it a color (RED)
properties.put(CellUtil.TOP_BORDER_COLOR, IndexedColors.RED.getIndex());
properties.put(CellUtil.BOTTOM_BORDER_COLOR, IndexedColors.RED.getIndex());
properties.put(CellUtil.LEFT_BORDER_COLOR, IndexedColors.RED.getIndex());
properties.put(CellUtil.RIGHT_BORDER_COLOR, IndexedColors.RED.getIndex());

// Apply the borders to the cell at B2
Row row = sheet.createRow(1);
Cell cell = row.createCell(1);
CellUtil.setCellStyleProperties(cell, properties);

// Apply the borders to a 3x3 region starting at D4
for (int ix=3; ix <= 5; ix++) {
  row = sheet.createRow(ix);

  for (int iy = 3; iy <= 5; iy++) {
    cell = row.createCell(iy);
    CellUtil.setCellStyleProperties(cell, properties);
  }
}

注意:这不会替换单元格的属性,它会将您放入 Map 的属性与 Cell 的现有样式属性。如果属性已存在,则将其替换为新属性。如果属性没有 存在,则添加它。此方法不会删除 CellStyle 属性。

45、绘图边框

在 Excel 中,只需按一下按钮,即可在整个工作簿区域上应用一组边框。The PropertyTemplate object 使用定义的方法和常量来模拟此操作,以允许绘制 top、bottom、left、right、horizontal、 垂直、内部、外部或单元格范围周围的所有边框。其他方法允许应用颜色 到边境。

它的工作原理是这样的:你创建一个 PropertyTemplate 对象,它是你希望应用于 表。然后,向 PropertyTemplate 添加边框和颜色,最后将其应用于所需的任何工作表 那组边界。您可以创建多个 PropertyTemplate 对象并将它们应用于单个图纸,也可以 将同一 PropertyTemplate 对象应用于多个工作表。它就像一个预先打印的表格。

枚举:

边框样式

定义边框的外观,是粗的还是细的、实线还是虚线、单边还是双边。 此枚举替换已弃用的 CellStyle.BORDER_XXXXX 常量。PropertyTemplate 不会 支持旧样式的 BORDER_XXXXX 常量。特殊值 BorderStyle.NONE 将从 一个 Cell 。

边界范围

描述 BorderStyle 将应用于的区域部分。例如,TOP、BOTTOM、INSIDE 或 OUTSIDE。 特殊值 BorderExtent.NONE 将从 PropertyTemplate 中删除边框。应用模板后, 不会对 PropertyTemplate 中不存在 border 属性的单元格边框进行任何更改。

// draw borders (three 3x3 grids)
PropertyTemplate pt = new PropertyTemplate();

// #1) these borders will all be medium in default color
pt.drawBorders(new CellRangeAddress(1, 3, 1, 3),
        BorderStyle.MEDIUM, BorderExtent.ALL);

// #2) these cells will have medium outside borders and thin inside borders
pt.drawBorders(new CellRangeAddress(5, 7, 1, 3),
        BorderStyle.MEDIUM, BorderExtent.OUTSIDE);
pt.drawBorders(new CellRangeAddress(5, 7, 1, 3), BorderStyle.THIN,
        BorderExtent.INSIDE);

// #3) these cells will all be medium weight with different colors for the
//     outside, inside horizontal, and inside vertical borders. The center
//     cell will have no borders.
pt.drawBorders(new CellRangeAddress(9, 11, 1, 3),
        BorderStyle.MEDIUM, IndexedColors.RED.getIndex(),
        BorderExtent.OUTSIDE);
pt.drawBorders(new CellRangeAddress(9, 11, 1, 3),
        BorderStyle.MEDIUM, IndexedColors.BLUE.getIndex(),
        BorderExtent.INSIDE_VERTICAL);
pt.drawBorders(new CellRangeAddress(9, 11, 1, 3),
        BorderStyle.MEDIUM, IndexedColors.GREEN.getIndex(),
        BorderExtent.INSIDE_HORIZONTAL);
pt.drawBorders(new CellRangeAddress(10, 10, 2, 2),
        BorderStyle.NONE,
        BorderExtent.ALL);

// apply borders to sheet
Workbook wb = new XSSFWorkbook();

Sheet sh = wb.createSheet("Sheet1");

pt.applyBorders(sh);

注意:最后一个 pt.drawBorders() 调用使用 BorderStyle.NONE 从范围中删除边框。喜欢 setCellStyleProperties 时,applyBorders 方法会合并单元格样式的属性,因此现有边框 仅当它们被其他内容替换时才会被更改,或者仅当它们被替换为 要从边框中删除颜色,请使用 IndexedColor.AUTOMATIC.getIndex()。

此外,若要从 PropertyTemplate 对象中删除边框或颜色,请使用 BorderExtent.NONE。

这还不适用于对角线边界。

46、创建数据透视表

数据透视表是电子表格文件的一项强大功能。您可以使用以下代码创建数据透视表。

XSSFWorkbook wb = new XSSFWorkbook();

XSSFSheet sheet = wb.createSheet();

//Create some data to build the pivot table on
setCellData(sheet);

XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:D4"), new CellReference("H5"));

//Configure the pivot table
//Use first column as row label
pivotTable.addRowLabel(0);

//Sum up the second column
pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1);

//Set the third column as filter
pivotTable.addColumnLabel(DataConsolidateFunction.AVERAGE, 2);

//Add filter on forth column
pivotTable.addReportFilter(3);

47、具有多种样式的单元格(富文本字符串)

应用一组文本格式(颜色、样式、字体等) 添加到单元格中,您应该为工作簿创建一个 CellStyle,然后应用于单元格。

// XSSF Example
XSSFCell cell = row.createCell(1);

XSSFRichTextString rt = new XSSFRichTextString("The quick brown fox");

XSSFFont font1 = wb.createFont();
font1.setBold(true);
font1.setColor(new XSSFColor(new java.awt.Color(255, 0, 0)));

rt.applyFont(0, 10, font1);

XSSFFont font2 = wb.createFont();
font2.setItalic(true);
font2.setUnderline(XSSFFont.U_DOUBLE);
font2.setColor(new XSSFColor(new java.awt.Color(0, 255, 0)));

rt.applyFont(10, 19, font2);

XSSFFont font3 = wb.createFont();

font3.setColor(new XSSFColor(new java.awt.Color(0, 0, 255)));

rt.append(" Jumped over the lazy dog", font3);

cell.setCellValue(rt);

要将不同的格式应用于单元格的不同部分,您需要 需要使用 RichTextString, 这允许在单元格内设置文本部分的样式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络入门实战:(九)分类问题 → 神经网络模型搭建模版和训练四步曲

(一) 神经网络模型搭建官方文档 每一层基本都有权重和偏置&#xff0c;可以仔细看官方文档。 pytorch 官网的库&#xff1a;torch.nn — PyTorch 2.5 documentation Containers库&#xff1a;用来搭建神经网络框架&#xff08;包含所有的神经网络的框架&#xff09;&#xff1b…

达梦数据库文件故障的恢复方法

目录 1、概述 1.1 概述 1.2 环境介绍 2、使用备份集的恢复方法 2.1 实验准备 2.2 误删除“用户表空间数据文件” 2.3 误删除SYSTEM.DBF 2.4 误删除ROLL.DBF 2.5 REDO日志文件 3、无备份集的恢复方法 3.1 误删除“表空间数据文件” 3.2误删除控制文件 3.3 误删除RO…

uniapp进阶技巧:如何优雅地封装request实例

在uniapp开发过程中&#xff0c;合理封装网络请求是提高代码质量和开发效率的关键。本文将介绍一种更为优雅的封装方式&#xff0c;通过创建一个request实例来管理不同类型的HTTP请求。 一、准备工作 在开始封装之前&#xff0c;请确保你的项目中已经安装了uniapp开发环境&…

45 基于单片机的信号选择与温度变化

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采用DS18B20检测温度&#xff0c;通过三种LED灯代表不同状态。 采用DAC0832显示信号脉冲&#xff0c;通过8位数码管显示温度。 信号脉冲可以根据两个按键分别调整为正弦…

yagmail邮件发送库:如何用Python实现自动化邮件营销?

&#x1f3a5; 作者简介&#xff1a; CSDN\阿里云\腾讯云\华为云开发社区优质创作者&#xff0c;专注分享大数据、Python、数据库、人工智能等领域的优质内容 &#x1f338;个人主页&#xff1a; 长风清留杨的博客 &#x1f343;形式准则&#xff1a; 无论成就大小&#xff0c;…

付费版-多媒体云转码视频处理工具-付费系统完整源码搭建-先到先得-本文带完整搭建步骤-优雅草央千澈

付费版-多媒体云转码视频处理工具-付费系统完整源码搭建-先到先得-本文带完整搭建步骤-优雅草央千澈 环境 linuxnginxphp7.1mysql5.6 安装步骤 以下适用于宝塔已经安装好的情况 1.上传源码到你的网站目录 2.访问你的域名&#xff0c;按操作提示进行安装配置&#xff08;如…

java基础概念46-数据结构1

一、引入 List集合的三种实现类使用了不同的数据结构&#xff01; 二、数据结构的定义 三、常见的数据结构 3-1、栈 特点&#xff1a;先进后出&#xff0c;后进先出。 java内存容器&#xff1a; 3-2、队列 特点&#xff1a;先进先出、后进后出。 栈VS队列-小结 3-3、数组 3-…

朗迪锋亮相2024人因工程与智能系统交互国际会议

2024年11月28日至30日&#xff0c;2024人因工程与智能系统交互国际会议在深圳隆重举办。此次大会以推动我国人因工程学科发展为目标&#xff0c;致力于加强国际学术交流&#xff0c;深入探讨人工智能时代的智能系统交互&#xff0c;旨在培育新质生产力&#xff0c;助力经济社会…

Java基础之控制语句:开启编程逻辑之门

一、Java控制语句概述 Java 中的控制语句主要分为选择结构、循环结构和跳转语句三大类&#xff0c;它们在程序中起着至关重要的作用&#xff0c;能够决定程序的执行流程。 选择结构用于根据不同的条件执行不同的代码路径&#xff0c;主要包括 if 语句和 switch 语句。if 语句有…

如何部署vue项目到Github Pages

1.创建vue项目 npm create vitelatest my-vue-app -- --template vue 2.创建github仓库 3.连接仓库 在项目根目录右键选择open git base here&#xff0c;如果没有安装git请先安装git。 初始化仓库 $ git init $ git add . $ git commit -m "init"将项目与仓库连…

Jenkins升级到最新版本后无法启动

1. 场景还原 最近在web界面将jenkins升级到最新版本后&#xff0c;后台无法启动jenkins服务&#xff0c;服务状态如下&#xff1a; 运行jenkins命令提示invalid Java version jenkins --version jenkins: invalid Java version: java version "1.8.0_202" Java(TM)…

「计算机网络性能指标」

速率 速率&#xff08;Speed&#xff09;&#xff1a;指连接到网络上的节点在信道上的传输数据的速率。也称数据率或比特率&#xff0c;数据传输速率 信道&#xff08;Channel&#xff09;&#xff1a;表示向某一方向传送信息的通道&#xff08;信道 ≠ 通信线路&#xff09;…

HTTP协议详解:从HTTP/1.0到HTTP/3的演变与优化

深入浅出&#xff1a;从头到尾全面解析HTTP协议 一、HTTP协议概述 1.1 HTTP协议简介 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最广泛的通信协议之一。它用于客户端与服务器之间的数据传输&#xff0c;尤其是在Web…

【Docker】Docker 容器日志过大导致磁盘爆满

docker容器的日志文件目录位于/var/lib/docker/containers/容器/容器-json.log 查看日志大小 cd /var/lib/docker/containers/ du -h --max-depth1 临时删一点 cd xxxxxxx/ tail -100 xxxxxxx-json.log > xxxxxxx-json.log 如图 解决方式&#xff08;全局&#xff09; …

MySQL 索引创建 大数据查询 性能测试 SQL优化 慢查询

介绍 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些 数据结构以某种方式引用(指向)数据&#xff0c; 这样就可以在这些数据结构上实现高级查找算法&#xff0c;这种数据结构就是…

JAVA:Springboot 集成 WebSocket 和 STOMP 实时消息的技术指南

1、简述 随着互联网应用的复杂性和实时性需求的增加&#xff0c;传统的 HTTP 请求响应模式已不能满足某些场景的需求。WebSocket 和 STOMP 协议为构建实时消息传输提供了极大的便利。本文将介绍如何在 Spring Boot 中使用 WebSocket 和 STOMP 创建一个实时消息应用&#xff0c…

华为仓颉编程环境搭建

1、仓颉介绍 摘自华为官方&#xff1a;仓颉编程语言作为一款面向全场景应用开发的现代编程语言&#xff0c;通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的 IDE 工具链支持&#xff0c;为开发者打造友好开发体验和卓越程序性能。 其具体特性表现为&am…

Vue+Elementui el-tree树只能选择子节点并且支持检索

效果&#xff1a; 只能选择子节点 添加配置添加检索代码 源码&#xff1a; <template><div><el-button size"small" type"primary" clearable :disabled"disabled" click"showSign">危险点评估</el-button>…

【前端】安装hadoop后,前端启动报错,yarn命令

新安装hadoop后&#xff0c;前端启动项目用yarn命令&#xff0c;报错。 报错&#xff1a;系统找不到指定的路径。 No HADOOP_CONF_DIR set. Please specify it either in yarn-env.cmd or in the environment. 解决&#xff1a;删掉hadoop目录下yarn的文件 检查&#xff1a;…

【数据事务】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…