poi能实现exceljs实现下拉菜单联动的2级联动吗

poi excel 下拉 联动_Java_ThinkSAAS
poi excel 下拉 联动
poi excel 下拉 联动
内容来源: 网络
最近需要生成一个excel的省市二级联动 上网找了些资料 主要根据以下两个整理而得
excel下拉联动
首先准备两个方法: 创建名称管理器数据 、设置数据有效性
* 创建名称管理器数据
* @param wb
* @param name
* @param expression
private HSSFName createName(HSSFWorkbook wb, String name, String expression){
HSSFName refer = wb.createName();
refer.setRefersToFormula(expression);
refer.setNameName(name);
* 设置数据有效性(通过名称管理器级联相关)
* @param name
* @param firstRow
* @param endRow
* @param firstCol
* @param endCol
private HSSFDataValidation setDataValidation(String name, int firstRow, int endRow, int firstCol, int endCol){
DVConstraint constraint = DVConstraint.createFormulaListConstraint(name);
CellRangeAddressList regions = new CellRangeAddressList((short) firstRow, (short) endRow, (short) firstCol, (short) endCol);
HSSFDataValidation data_validation = new HSSFDataValidation(regions, constraint);
return data_
先把省市联动的数据存放到一个名称为数据字典的新工作表中,省份名称存入B列,城市名称C列(这个列不固定,可根据自己喜好改变,工作表隐藏方法
wb.setSheetHidden(3, true)
),这里代码我就不贴了,效果如图
有了这些准备后,我们先添加省份下拉列表
this.createName(wb,"province","数据字典!$B$1:$B$"+provincelist.size());
HSSFDataValidation valiprovince = this.setDataValidation("province", 3, 3, 4, 4);
sheet.addValidationData(valiprovince);
由于是联动,城市的名称要与省份名相对应,因此需要循环省份添加城市到名称管理器
for (Map province : provincelist) {
this.createName(wb, province.get("parentname").toString(),"数据字典!$C$"+ 开始行 +":$C$"+ 结束行);
HSSFDataValidation valicity = this.setDataValidation("INDIRECT($E$4)", 3, 3, 5, 5);
sheet.addValidationData(valicity);
注:我将全部城市名按顺序存入C列,$E$4 为省份单元格位置,
有这么2B的需求吗??
你猜呢 小tt
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信您好,欢迎来Office 求助!
一键分享:
excel中如何设置二级下拉菜单联动
excel中如何设置二级下拉菜单联动
离问题结束还有:-619天-7小时回答数:1
网友的回答共1条
给个二级下拉菜单教程你看看哈~
追问:已经按这个操作了,但是A列和B列的下拉项不能关联。用indirdct公式的时候也不能进入下一步,提示不能引用。
相关已解决问题
·&1个回答
·&2个回答
·&1个回答
·&1个回答
·&1个回答
·&1个回答
·&1个回答
·&1个回答
·&1个回答
·&1个回答
网友正在问
更多ET表格/EXCEL相关知识1055人阅读
POI对下拉列表稍优于JXL,jxl纯java下build下拉列表会出现下拉列表数量限度(之前我曾经碰到过此类问题)。两个下拉列表原理:首先创建一列隐藏数据,然后将此列中的数据build到下拉列表中展示。
主要类说明:
CellRangeAddressList
New CellRangeAddress(firstRow,lastRow, firstCol, lastCol)四个参数表示设置成下拉列表的单元格范围
DVConstraint
生成下拉列表的内容
HSSFDataValidation
将下拉内容与下拉框进行绑定
下面将Excel第一列中的1-10行设置成下拉列表。
代码片段:
public&static&HSSFWorkbook write(InputStream inputStream)&throws&IOException, ClassNotFoundException{
&&&&&&&&&&&&//初始一个workbook
&&&&&&&&&&& HSSFWorkbook workbook =&new&HSSFWorkbook(inputStream);
&&&&&&&&&&&&//创建一个sheet
&&&&&&&&&&& HSSFSheet sheet = workbook.getSheetAt(0);
&&&&&&&&&&&&//准备下拉列表数据
&&&&&&&&&&& String[] strs =&new&String[]{&aa&,&bb&,&cc&,&dd&,&ee&,&ff&,&gg&,&hh&,&ii&};
&&&&&&&&&&&&//设置第一列的1-10行为下拉列表
&&&&&&&&&&& CellRangeAddressList regions =&new&CellRangeAddressList(0, 9, 0, 0);
&&&&&&&&&&&&//创建下拉列表数据
&&&&&&&&&&& DVConstraint constraint = DVConstraint.createExplicitListConstraint(strs);
&&&&&&&&&&&&//绑定
&&&&&&&&&&& HSSFDataValidation dataValidation =&new&HSSFDataValidation(regions, constraint);
&&&&&&&&&&& sheet.addValidationData(dataValidation);
&&&&&&&&&&&
&&&&&&&&&&&&return&
输出结果:
注:如果想设置成整列都是下拉列表即将参数lastRow设置为65535。目前下拉列表这块好像只支持到128个数量。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:228568次
积分:4645
积分:4645
排名:第5025名
原创:155篇
转载:548篇
评论:13条
细节决定成败,
态度决定一切。
文章:32篇
阅读:9648
(2)(1)(3)(6)(2)(24)(32)(31)(1)(6)(108)(7)(25)(232)(65)(12)(2)(2)(6)(2)(4)(21)(120)POI生成excel带下拉 - javaSamBlog - ITeye技术网站
博客分类:
package com.
import java.io.FileOutputS
import org.apache.poi2.hssf.usermodel.DVC
import org.apache.poi2.hssf.usermodel.HSSFC
import org.apache.poi2.hssf.usermodel.HSSFDataV
import org.apache.poi2.hssf.usermodel.HSSFR
import org.apache.poi2.hssf.usermodel.HSSFS
import org.apache.poi2.hssf.usermodel.HSSFW
import org.apache.poi2.hssf.util.CellRangeAddressL
public class JExcel {
public static void main(String[] args) {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
// 在第一行第一个单元格,插入下拉框
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
// 普通写入操作
cell.setCellValue("请选择");// 这是实验
// 生成下拉列表
// 只对(0,0)单元格有效
CellRangeAddressList regions = new CellRangeAddressList(0, 0, 0, 0);
// 生成下拉框内容
DVConstraint constraint = DVConstraint.createExplicitListConstraint(new String[] { "2", "3" });
// 绑定下拉框和作用区域
HSSFDataValidation data_validation = new HSSFDataValidation(regions,constraint);
// 对sheet页生效
sheet.addValidationData(data_validation);
// 写入文件
FileOutputStream fileO
fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Over");
浏览: 457639 次
来自: 北京
poi生成excel文档,感觉蛮复杂的,可以试试用pageof ...
我发现greenplum 通过jdbc insert性能很差, ...
哪有收邮件???
最后的&是否包含key&应该用contai ...

我要回帖

更多关于 html三级联动下拉菜单 的文章

 

随机推荐