Java 使用 POI 导出Excel,实现单元格内容为下拉选项

news2024/11/12 19:33:33

在使用Apache POI的库生成Excel导入模板的时候,有时候需要设置某些列只能选择下拉选项中的内容,该如何实现这个特性呢?下面是一个示例代码,演示如何实现单元格只能从下拉中选择内容。

代码

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelDropDownDemo {
  public static void main(String[] args) {
    // 创建一个新的工作簿
    Workbook workbook = new XSSFWorkbook();

    // 创建一个新的工作表
    Sheet sheet = workbook.createSheet("Sheet1");

    // 设置单元格只能选择下拉内容
    // 创建下拉列表的内容
    String[] dropDownList = {"Option 1", "Option 2", "Option 3"};

    // 将下拉列表的内容设置到单元格中
    DataValidationHelper validationHelper = sheet.getDataValidationHelper();
    DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(dropDownList);

    // 设置数据验证的单元格范围
    CellRangeAddressList addressList = new CellRangeAddressList(0, 1000, 0, 0);
    DataValidation dataValidation = validationHelper.createValidation(constraint, addressList);

    // 禁止输入非下拉列表中的内容
    dataValidation.setShowErrorBox(true);

    // 将数据验证添加到工作表中
    sheet.addValidationData(dataValidation);

    try (FileOutputStream fileOut = new FileOutputStream("DropDownExample.xlsx")) {
      // 将工作簿写入文件输出流
      workbook.write(fileOut);
    } catch (IOException e) {
      e.printStackTrace();
    }

    // 关闭工作簿
    try {
      workbook.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

这个示例代码将创建一个名为output.xlsx的Excel文件,并在该文件中演示如何添加一个只能选择下拉列表内容的单元格。

主要步骤:

  1. 创建下拉列表的内容:定义一个字符串数组dropDownList,其中包含下拉列表的选项。
  2. 设置数据验证的单元格范围:使用CellRangeAddressList指定要应用数据验证的单元格范围。
  3. 创建数据验证:使用DataValidationHelperDataValidationConstraint创建一个数据验证,并将其应用于指定的单元格范围。
  4. 添加数据验证:将数据验证添加到工作表中,并设置为显示错误框,以确保用户只能选择下拉列表中的内容。

这样就实现了在Excel文件中设置单元格只能选择下拉列表中的内容的功能。

效果图

image-20240728182121370

其他

另外,对以下内容感兴趣的同学请移步对应教程:

GPT-4o 教程

MidJourney教程

Poe教程

Fantia教程

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

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

相关文章

使用Vue创建cesium项目模版该如何选择?

目录 问题描述模版说明及选用建议小结 问题描述 刚入手这个项目,什么都是一知半解。使用Vue,创建Cesium项目的时候,提示需要选择一个模版(如下图所示),该如何选择项目模版选,总结如下: 模版说明…

共源级PMOS反向串联电路分析

一、共源级PMOS反向串联结构如下图: 二、具体分析 1、当VBUS_EN拉低,三极管Q5截止: 如果V-BUS>GEN_5V, T3体二极管阴极电压大于阳极电压,T3体二极管截止。由于上拉电阻R24将S端电压向G端极间电容充电,使得VgVs&…

【机器学习】探秘图像处理与分类:运用C++结合OpenCV实现智能视觉识别技术

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 在计算机视觉领域,图像处理与分类是核心任务之一。OpenCV作为一个功能强大的开源计算机视觉库,提供…

【搜索引擎】ElasticSearch 7.x版本

1 Elasticsearch概述 1.1 Elasticsearch是什么 1.2 全文搜索引擎 1.3 Elasticsearch And Solr 1.4 Elasticsearch Or Solr 1.5 Elasticsearch应用案例 2 Elassticsearch入门 2.1 Elasticsearch 安装 2.1.1 下载软件 2.1.2 安装软件 2.1.3 问题解决 2.2 Elasticsearch基本操…

【网络基础】DNS协议详解:从背景到解析过程及`dig`工具的使用

文章目录 DNS 协议① 前言 - 背景② 域名③ DNS解析过程④ Linux下用dig工具 分析DNS过程⑤ 浏览器中输入URL后,会有哪些过程 DNS 协议 DNS(域名系统,Domain Name System)是互联网的一个核心协议,用于将域名转换为 IP…

有一种“穷人性格”,大事拎不清,小事算太精

在生活的舞台上,人们各自演绎着不同的人生故事。而有一种性格特征,常常被视为与经济困境紧密相连,那就是“大事拎不清,小事算太精”的所谓“穷人性格”。这种性格不仅在个体层面影响着人们的生活轨迹,也在一定程度上反映了社会现象背后的深层次问题。 一、“穷人性格”的表…

读软件开发安全之道:概念、设计与实施10安全设计审查

1. 安全设计审查 1.1. Security Design Review,SDR 1.2. 将安全性融入软件设计的最佳方法之一是戴上“安全帽”进行单独的设计审查 1.3. 安全审查员是熟悉软件运行的系统和环境,以及知道如何使用它的人,但他们不参与设计工作,这…

【SpringCloud】(一文通) 统一服务入口-Gateway

目 录 一. 网关介绍1.1 问题1.2 什么是 API 网关1.3 常见网关实现 二. Spring Cloud Gateway2.1 快速上手2.1.1 创建网关项目2.1.2 引入网关依赖2.1.3 编写启动类2.1.4 添加Gateway的路由配置2.1.5 测试 2.2 Route Predicate Factories2.2.1 Predicate2.2.2 Route Predicate Fa…

<数据集>脑肿瘤识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:5249张 标注数量(xml文件个数):5249 标注数量(txt文件个数):5249 标注类别数:4 标注类别名称:[Glioma, Meningioma, No Tumor, Pituitary] 序号类别名称图片数框数1…

【RabbitMQ】概述

目 录 一. RabbitMQ 概述什么是 MQMQ的作用为什么选择 RabbitMQRabbitMQ 介绍 一. RabbitMQ 概述 前言 Rabbit, 兔子的意思 互联网行业很多公司, 都喜欢用动物命名产品, 或者作为公司的logo, 吉祥物. 比如: 腾讯的企鹅, 京东的狗, 美团的袋鼠, 携程的海豚,阿里就更多了, 蚂蚁…

原生JS实现下滑到当前模块时左右滑动到位

效果图&#xff1a; ​​​​​​​ 源码&#xff1a; <div style"height: 1500px;"></div><div class"software-box"><div class"software-container" style"display: flex;"><div class"software-…

MapBox Android版开发 2 本地化

MapBox Android版开发 2 本地化 前言MapBox V9 本地化示例1示例2示例3运行效果图 MapBox V11 本地化示例运行效果图 前言 前文介绍了MapBox V9和 V11 两个版本配置和显示地图。默认MapBox地图语言为英文&#xff0c;本文重点介绍如何将地图语言设置为中文。 MapBox V9 本地化…

52 mysql 启动过程中常见的相关报错信息

前言 我们这里主要是看一下 service mysql start, service mysql stop 的过程中的一些常见的错误问题 这些 也是之前经常碰到, 但是 每次都是 去搜索, 尝试 1, 2, 3, 4 去解决问题 但是 从来未曾思考过 这个问题到底是 怎么造成的 The server quit without updating PID fil…

【Test 001】Qt 开发基础体系 QMap 类和 QHash 类以及 QVector 类

文章目录 1.QMap 详解1.1 QMap 的介绍1.2 QMap 的具体用法如下1.3 QmultiMap类 2.QHash 详解3. QMap 和 QHash 的对比4. QVector 详解 1.QMap 详解 1.1 QMap 的介绍 &#x1f427;① QMap<key,T>提供一个从类型为Key的键到类型为T的值的映射。通常&#xff0c;QMap存储的…

sheng的学习笔记-AI-半监督SVM

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 svm: sheng的学习笔记-AI-支持向量机&#xff08;SVM&#xff09;-CSDN博客 半监督学习&#xff1a; sheng的学习笔记-AI-半监督学习-CSDN博客 什么是半监督svm 半监督支持向量机&#xff08;Semi-Supervised Support Ve…

重邮计算机网络803-(3)数据链路层

目录 一.数据链路两种类型 二.使用点对点信道的数据链路层 1. 数据链路和帧 2.数据链路层传送的是帧 三.三个基本问题 1.封装成帧 2.透明传输 ①字节填充法 ②其他方法&#xff1a;字符计数法&#xff0c;比特填充法&#xff0c;违规编码 3. 差错检测 &#xff08;1…

容器存储接口--CSI

文章目录 一、背景二、CSI 是什么三、CSI 系统架构1、CSI 如何与 k8s 组件相互通信2、CSI 由哪些组件组成3、CSI 的工作原理4、k8s 存储中涉及的组件及其作用4.1、Sidecar Containers4.1.1、[external-attacher](https://kubernetes-csi.github.io/docs/external-attacher.html…

3.1ER图

ER 最后总结以下E-R图的设计原则。 1&#xff09;尽量减少实体集数量&#xff0c;能作为属性时不要作为实体集。 2&#xff09;“属性”不能再具有需要描述的性质。必须时不可分割的数据项。不能时其他属性的聚集。3&#xff09;“属性”不能与其他实体具有联系 4)综合局部E-…

XDMA原理

目录 1. PCIe to AXI Lite Master1.1. BAR Address to AXI Address 2. PCIe to AXI Memory Mapped Master3. PCIe to DMA Interface3.1. Descriptor3.2. Transfer for H2C 4. MSI-X Vector Table and PBA5. AXI Lite Slave 介绍XDMA IP核的功能及原理。 根据pg195&#xff0c;…

AI生3D:从草图到交互式3D游戏场景

随着人工智能技术的进步,3D内容生成变得越来越容易。AI生3D是一种创新的技术框架,它允许用户仅使用简单的草图和文本描述就能创建出复杂的3D游戏场景。这项技术不仅降低了3D内容创作的门槛,还极大地扩展了创意表达的可能性。 技术框架概述 AI生3D利用先进的机器学习模型来…