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

本文将继续介绍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.mzph.cn/diannao/63128.shtml

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

相关文章

Ruby On Rails 笔记1——Rails 入门

突然想跟着官方文档把Ruby On Rails过一遍&#xff0c;把一些有用的记下来就可以一直看了&#xff0c;do它! https://guides.rubyonrails.org/v7.2/ 注&#xff1a;官网是英文文档&#xff0c;我自己翻译了一下&#xff0c;不确保完全准确&#xff0c;只供自己学习开发使用。 …

基于Matlab BP神经网络的电力负荷预测模型研究与实现

随着电力系统的复杂性和规模的不断增长&#xff0c;准确的电力负荷预测对于电网的稳定性和运行效率至关重要。传统的负荷预测方法依赖于历史数据和简单的统计模型&#xff0c;但这些方法在处理非线性和动态变化的负荷数据时&#xff0c;表现出较大的局限性。近年来&#xff0c;…

MperReduce学习笔记下

自定义InputFormat合并小文件 案例需求 无论hdfs还是mapreduce&#xff0c;对于小文件都有损效率&#xff0c;实践中&#xff0c;又难免面临处理大量小文件的场景&#xff0c;此时&#xff0c;就需要有相应解决方案。 案例分析 小文件的优化无非以下几种方式&#xff1a; …

中国汽车出海风口下,智能网联供应商如何掘金海外市场?

中国智能网联供应链出海掘金潮已至。 中国汽车工业协会最新发布的数据显示&#xff0c;2024年1-8月乘用车累计出口317.5万辆&#xff0c;同比增长29.4%。2023年中国汽车出口量近500万台&#xff0c;出口的销量对中国汽车总销量增长的贡献率达到55.7%。 根据各大车企披露的规划…

react + antd desgin 使用form功能时upload,radio,checkbox不能回显的问题

最近使用react开发 遇到form回显的问题 &#xff0c;处理upload回显的问题&#xff0c;提示 react-refresh:160 Warning: [antd: Upload] value is not a valid prop, do you mean fileList? 查看文档后&#xff0c;在form.item 组件下有一个特殊属性 valuePropName 子节点的值…

Visual Studio开发lua脚本环境搭建

在Visual Studio上开发lua脚本环境搭建 1、下载lua的jdk安装&#xff0c;以及环境变量配置 下载LuaForWindows_v5.1.5-52.exe安装&#xff0c; 安装好之后&#xff0c;检查是否路径自动。 下载地址&#xff1a; https://github.com/rjpcomputing/luaforwindows/releases (1…

Elasticsearch ILM 故障排除:常见问题及修复

作者&#xff1a;来自 Elastic Stef Nestor 大家好&#xff01;我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时&#xff0c;我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…

初步简单的理解什么是库,什么是静态库,什么是动态库

库是什么 库根据名字我们应该很容易理解&#xff0c;在我们日常生活种&#xff0c;包含库的东西有很多&#xff0c;像仓库&#xff0c;库房那些&#xff0c;库是拿来存放&#xff0c;方便管理东西的&#xff0c;在我们编程当中&#xff0c;库的定义也是如此 那么为什么要有库…

建筑行业数据分析如何做?

导读&#xff1a;在谈数字化转型之前&#xff0c;先来谈谈数据的价值。数字化转型的基础是数据&#xff0c;是数字化的基本的生产资料&#xff0c;数据的质量直接决定了数字化的能力、所能达到的深度和广度。目前做的数据可视化项目总感觉只是数据展现而已&#xff0c;而不达不…

服务器监控工具哪吒探针 v1 版本上线 全新设计带来新体验

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 上周黑五期间&#xff0c;哪吒探针进行了一次颇有争议的 Breaking Change 更新&#xff0c;将面板和 Agent 升级到了 v1 版本&#xff0c;并且与原来的 v0.x 版本完全不兼容。 同时&#xff0c;将 v0.x 的…

QNX的资源管理器:resmgr

参考资料: QNX官网文档 openqnx源码参考 这篇文章借用一下openqnx中的trunk/services/dumper/dumper.c作为参考 以下代码参考openqnx,现在的QNX许多机制或许有大致改进和调整,但是基本上不会跳出这个框架 在Linux中,一切设备皆文件,在/dev目录下,一个文件标识一个或多…

Node.js 中的文件系统(fs)模块详解与代码示例

Node.js 中的文件系统&#xff08;fs&#xff09;模块详解与代码示例 Node.js 的 fs 模块提供了与文件系统交互的能力&#xff0c;包括文件的读写、目录的管理等。以下是 fs 模块中一些常用方法的详细解释和代码示例&#xff1a; 1. 异步读取文件内容 作用&#xff1a;异步读…

LabVIEW密码保护与反编译的安全性分析

在LabVIEW中&#xff0c;密码保护是一种常见的源代码保护手段&#xff0c;但其安全性并不高&#xff0c;尤其是在面对专业反编译工具时。理论上&#xff0c;所有软件的反编译都是可能的&#xff0c;尽管反编译不一定恢复完全的源代码&#xff0c;但足以提取程序的核心功能和算法…

灰狼算法与蚁群算法的结合:一种新颖的优化方法

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【前端学习路线】(超详细版本)

先附上学习路线图&#xff1a;前端学习路线 第一阶段&#xff1a;前端入门&#xff08;htmlcss&#xff09; 前端最基本的知识&#xff0c;需要先将这些内容融汇贯通&#xff0c;学习后面内容才会不吃力。学习完可以做几个静态页练习一下。 推荐视频学习链接&#xff1a; 黑马程…

四、自然语言处理_03LSTM与GRU

0、前言 随着循环神经网络&#xff08;RNN&#xff09;在各种序列数据处理任务中被广泛应用&#xff0c;研究人员逐渐发现了其在处理长序列数据时会容易出现梯度消失&#xff08;vanishing gradient&#xff09;和梯度爆炸&#xff08;exploding gradient&#xff09;问题&…

类加载过程Java虚拟机(JVM)详细

类加载过程是Java虚拟机&#xff08;JVM&#xff09;将类的字节码文件加载到内存中&#xff0c;并生成对应的类对象的过程。这个过程主要包括加载、验证、准备、解析和初始化五个阶段&#xff0c;每个阶段都有其特定的任务和作用。以下是对每个阶段的详细解释&#xff1a; 1. …

基于灰色神经网络的订单需求预测

灰色神经网络&#xff08;Grey Neural Network, GNN&#xff09; 是将灰色系统理论与人工神经网络相结合的一种模型&#xff0c;旨在处理不完全信息和小样本问题。灰色神经网络利用灰色系统的预测优势和神经网络的学习能力&#xff0c;能够在信息不完整或数据不充分的情况下实现…

nerdctl:与 Docker 兼容的 containerd CLI

nerdctl 是一个用于容器管理的命令行工具&#xff0c;它旨在提供与 Docker CLI 相似的用户体验&#xff0c;但却是为 containerd 这样的低级容器运行时设计的。containerd 是一个行业标准的容器运行时&#xff0c;被广泛用作 Kubernetes 等容器编排平台的一部分。nerdctl 通过简…

java基础教程第16篇( 正则表达式)

Java 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言&#xff0c;但是在每种语言中有细微的差别。 Java 提供了 java.util.regex 包&#xff0c;它包含了 Pattern 和 Matcher 类&#xff0c;用于处理正…