POI设置单元格下拉框
一、导出 Excel 单元格设置下拉框
日常开发中,导出基础数据为模版,填充信息后导入时,有时候会要求某些导入项应该为下拉框选择,一个是为了规范数据,也可以简化填充。
1.1 单元格下拉框选项总字符较少的情况
单元格设置的下拉框字符总数小于 250,可以在当前 sheet 页直接设置单元格下拉框,可以单个或批量设置。
public static void setDropDown(Sheet sheet,int startRow,int maxRow,int startColumn, int maxColumn){
for (int j=startColumn; j<maxColumn; j++){
String attr = sheet.getRow(0).getCell(j).getStringCellValue().trim();
if (IBALegalMap.containsKey(attr) && !("Classification").equals(attr)){
//存在下拉值,取出存在的下拉值,转化为 String 数组
List<String> list = IBALegalMap.get(attr);
String[] str = list.toArray(new String[list.size()]);
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) sheet);
XSSFDataValidationConstraint dvConstraint =
(XSSFDataValidationConstraint) dvHelper.createExplicitListConstraint(str);
//设置起始行结束后,起始列结束列
CellRangeAddressList addressList = new CellRangeAddressList(startRow,maxRow,j,j);
XSSFDataValidation validation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, addressList);
sheet.addValidationData(validation);
}
}
}
1.2 单元格下拉框选项总字符较多的情况
单元格设置的下拉框字符总数大于 250,这种情况直接设置后,表格会报错,可以通过隐藏 Sheet 页的方式进行设置。
每列下拉框都需要设置一个隐藏 Sheet 页,名称不可重复。
public static void setDropDown(Sheet sheet,int startRow,int maxRow,int startColumn, int maxColumn,Workbook workbook,String hideName){
//Row row = sheet.getRow(startRow);
for (int j=startColumn;j<maxColumn;j++){
String attr = sheet.getRow(0).getCell(j).getStringCellValue().trim();
if (IBALegalMap.containsKey(attr) && (!"Classification".equals(attr))){
String s = Integer.toString(j);
hideName = hideName + s;
List<String> list = IBALegalMap.get(attr);
String[] str = list.toArray(new String[list.size()]);
logger.debug(str+"str");
//隐藏 sheet 页名称不可重复
Sheet hidden = workbook.createSheet(hideName);
Cell cell = null;
for (int i=0; i<str.length;i++){
String name = str[i];
Row strRow = hidden.createRow(i);
cell = strRow.createCell(0);
cell.setCellValue(name);
}
Name nameCell = workbook.createName();
nameCell.setNameName(hideName);
nameCell.setRefersToFormula(hideName+"!$A$1:$A$"+str.length);
//设置隐藏页
workbook.setSheetHidden(workbook.getSheetIndex(hidden),true);
DataValidationConstraint constraint = null;
//设置起始行结束后,起始列结束列
CellRangeAddressList addressList = new CellRangeAddressList(startRow,maxRow,j,j);
DataValidation validation = null;
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
constraint = dvHelper.createFormulaListConstraint(hideName);
//将数据添加进去
validation =dvHelper.createValidation(constraint,addressList);
sheet.addValidationData(validation);
logger.debug("设置下拉完成");
}
}

图 1.3 数据导出
POI设置单元格下拉框的更多相关文章
- POI 生成带联动下拉框的excel表格
参考:https://www.cnblogs.com/cjbbk/p/7527276.html 解决POI3.17 与其它版本的不同的坑:https://blog.csdn.net/Weirdo_zh ...
- java操作Excel的poi 设置单元格的对其方式
设置单元格的对其方式 package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.po ...
- 20191012——POI设置单元格自动行高(思路)
在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高.那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高 ...
- Excel设置数据有效性实现单元格下拉菜单的3种方法(转)
http://blog.csdn.net/cdefu/article/details/4129136 一.直接输入: 1.选择要设置的单元格,譬如A1单元格: 2.选择菜单栏的“数据”→“有效性”→出 ...
- JAVA poi设置单元格背景颜色
import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.Ce ...
- poi 设置单元格公式
Cell cell= rowF2.createCell(18);cell.setCellFormula("=Q20*R20");
- angular 设置年份选择下拉框,并默认今年
<select ng-model="selectedYear" ng-change="yearChange(selectedYear)"> < ...
- checkbox勾选事件,JQ设置css,下拉框JQ选中
<input id="CheckMainCompany" type="checkbox"/> $(function() { $("#Che ...
- EXCEL设置三级下拉框
EXCEL设置三级下拉框 1.添加下拉框数据源 公式--->指定 公式--->名称管理器 2.设置第一级下拉框的值 3.第一级下拉框选出一个值 4.设置第二级下拉框(INDIRECT($A ...
- c# dataGridView cell添加下拉框
应用场景: dataGridView需要某一个cell变成下拉框样式. 思路详解: dataGridVie添加固定格式的row. 代码: DataGridViewRow row = new DataG ...
随机推荐
- vulnhub:Victim01靶机
kali:192.168.111.111 靶机:192.168.111.170 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...
- 2170. 使数组变成交替数组的最少操作数 (Medium)
问题描述 2170. 使数组变成交替数组的最少操作数 (Medium) 给你一个下标从 0 开始的数组 nums ,该数组由 n 个正整数组成. 如果满足下述条件,则数组 nums 是一个 交替数组 ...
- curl从入门到精通教程
直接看英文版 https://catonmat.net/cookbooks/curl
- NX二次开发,对象上色
#include <uf_defs.h> #include <uf_ui_types.h> #include <uf.h> #include <uf_ui.h ...
- KinectFusion算法论文解读/代码解读随笔
--2021.6.8 上图是kinectfusion的流程图,是整个系统的工作流.我们对上面的流程进行分析以及相关代码的解读,使用的代码库是pcl的Kinectfusion复现.(ps:因为我只在ub ...
- 安装robotframwork 报错Requirement already satisfied
pip install 的时候报错信息为,在这里插入图片描述对于这样的问题需要指定安装路径pip install --target=d:\python\python37\lib\site-packag ...
- SOC平台,网络安全管理平台
SOC平台,网络安全管理平台 提供集中.统一.可视化的安全信息管理,通过实时采集各种安全信息,动态进行安全信息关联分析与风险评估,实现安全事件的快速跟踪.定位和应急响应. 从监控.审计.风险和运维四个 ...
- 【python_PAT_乙类】1007_素数对猜想 ,Python运行超时解决方案
题目: 让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数."素数对猜想"认为& ...
- Charles 抓取 HTTPS 协议内容,需要做什么操作?
抓取 HTTPS 需要安装证书,Charles 端需要安装 Android.iOS手机端也需要安装 电脑的 Charles 操作:1.proxy - proxy setting - http prox ...
- Core_DataCollect BacNet说明
/* * BACnet_AI 0 模拟输入.定义一个标准对象,其属性表示模拟输入的外部可见特征. BACnet_AO 1 模拟输出.定义一个标准对象,其属性表示模拟输出的外部可见特征. BACnet_ ...