excel 下拉框 很多的都可以

实现思路】

首先我们来看一下Excel中是怎么实现下拉框的级联的:

1. 假设我们的Excel有两个sheet,第一个sheet需要有两个下拉框:地市、区县——其中区县作为地市的二级下拉框级联。下面是具体实现步骤:



2. 首先我们在“数据字典”这个sheet页中的B列为地市下拉框提供数据:


3. 然后我们继续在E列为区县的下拉框提供数据:(注意是所有的数据)


4. 下拉框数据准备好之后,我们需要在名称管理器中创建所谓的“名称”:


地市下拉框创建名称:打开名称管理器,点击“新建”按钮,输入名称为“city”,引用的位置选择B列我们为地市下拉框提供的数据:


然后为区县下拉框创建名称:继续新建名称,名称起名为地市下拉框的第一个值“江苏”,引用的位置为E列中属于江苏的数据


继续新建名称,名称起名为地市下拉框的第二个值“宿迁”,引用位置为E列中属于宿迁的数据


如此反复,直到所有的地市名称与它所对应的区县数据关联起来。

5. 回到第一个sheet页中,选中需要添加“地市”下拉框的单元格

点击“数据”选项卡中的“数据有效性”


允许一项中选择“序列”,来源中如图填写,与city名称关联起来


点击“确定”,我们可以看到地市的下拉框已经加上了:


6. 然后选中需要添加区县下拉框的单元格,点击“数据有效性”

允许一项选择“序列”,来源我们输入“INDIRECT”,后面括号中填写级联的父级下拉框,即这一行中的地市名称那个单元格


点击确定,级联工作至此完成

POI实现】

有了Excel的实现方式,我们可以用同样的方式,在java后台生成这样的带有级联下拉框的EXCEL

我们准备如下方法:

在名称管理器中创建名称的方法:

[java]  view plain copy
  1. /** 
  2.  * 创建名称 
  3.  * @param wb 
  4.  * @param name 
  5.  * @param expression 
  6.  * @return 
  7.  */  
  8. public static HSSFName createName(HSSFWorkbook wb, String name, String expression){  
  9.     HSSFName refer = wb.createName();  
  10.     refer.setRefersToFormula(expression);  
  11.     refer.setNameName(name);  
  12.     return refer;  
  13. }  

设置数据有效性的方法:

[java]  view plain copy
  1. /** 
  2.  * 设置数据有效性(通过名称管理器级联相关) 
  3.  * @param name 
  4.  * @param firstRow 
  5.  * @param endRow 
  6.  * @param firstCol 
  7.  * @param endCol 
  8.  * @return 
  9.  */  
  10. public static HSSFDataValidation setDataValidation(String name, int firstRow, int endRow, int firstCol, int endCol){  
  11.     //设置下拉列表的内容  
  12.     log.info("起始行:" + firstRow + "___起始列:" + firstCol + "___终止行:" + endRow + "___终止列:" + endCol);  
  13.     //加载下拉列表内容  
  14.     DVConstraint constraint = DVConstraint.createFormulaListConstraint(name);  
  15.     // 设置数据有效性加载在哪个单元格上。  
  16.     // 四个参数分别是:起始行、终止行、起始列、终止列  
  17.     CellRangeAddressList regions = new CellRangeAddressList((short) firstRow, (short) endRow, (short) firstCol, (short) endCol);  
  18.     // 数据有效性对象  
  19.     HSSFDataValidation data_validation = new HSSFDataValidation(regions, constraint);  
  20.     return data_validation;  
  21. }  

有了这两个方法之后,我们在程序中对所有数据都写入完成之后,进行如下操作:

[java]  view plain copy
  1. //为地市下拉框创建名称  
  2. POIExcelUtil.createName(wb, "city""数据字典!$B$2:$B$"+rowcity);  
  3. //为地市下拉框设置数据有效性  
  4. HSSFDataValidation valicity = POIExcelUtil.setDataValidation("city"2, row-166);  

[java]  view plain copy
  1. <span style="white-space:pre">  </span>//为区县下拉框创建名称  
  2.     POIExcelUtil.createName(wb, cityName, "数据字典!$E$"+tempcoun+":$E$"+rowcoun);  


[java]  view plain copy
  1. <span style="white-space:pre">  </span>//为区县下拉框设置数据有效性,由于区县的下拉框是根据本行的地市单元格级联,所以需要循环加入  
  2.     for(int i = 2;i<row;i++){  
  3.         HSSFDataValidation valicounty = POIExcelUtil.setDataValidation("INDIRECT(G"+(i+1)+")", i, i, 77);  
  4.         sheet.addValidationData(valicounty);  
  5.     }  

所以,利用POI实现Excel下拉框的级联并不困难,只要我们明白Excel下拉框的实现原理,再用POI来实现其实很简单。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个将excel文件导入到SQLServer表中的程序 一 双击Input.exe运行程序,将弹出一个窗口,这时请你在"数据库名"后面的 输入栏中输入数据库名(如果是千方百剂就是输入帐套名).你如果没对数 据库的登录进行特殊修改的话,那"用户名和密码"就没必要修改了. 二 填好以上输入框后,真接单击"连接数据库",如果连接成功,将弹出"数据库 连接成功,你现在可以导入数据"的对话框,你按"OK"后将弹出新的一个数据 导入的窗口. 三 在这个窗口上单击"打开EXCEL文件"按钮,然后选择你要导入的Excel文件, 按打开(这时如果你数据比较多的话你可能要多等一会儿时间),之后就弹 出一个让你选择Excel工作区的窗口,你可以在下拉框中选择你数据所在的 Excel工作区了.选完以后按确定,你可以看到你Excel里的数据已经在"Excel 数据信息"里面了.而且还可以看到多了一列"不导入"的选项了.你如果哪一行 的数据不导入的话你可以打勾,这一行将不被导入. 四 完以上三步后,请在"表名"后面的下拉框中选择你所要导入的表的名称. 选完后,你得到"数据转换信息如下"这一栏配置数据转换的对应关系. 五 双击Excel字段处从下拉框中选择excel的列,双击表字段处从下拉框中选 择SQL表的列,然后看这列是否是"关键字",是的话打勾,不是不打勾.选择 完第一行后,就按方向键的向下键,继续第二行的选择,直到配置完Excel列 和表字段的对应关系为止. 六 按"导入数据"按钮系统会自动将页面转到"转换信息"这一页面.你将可以看 到第几行导入成功,或第几行导入失改的信息.
推荐一个excel记账软件,与excel结合得很好,挺好用的,界面简单,设计操作简单,但是功能多。 软件包括【财务管理子系统】和【进销存管理子系统】 推荐理由: 财务管理子系统: 第一、支持数据库,支持局域网同时操作,分不同角色,比如会计主管、记账员等。支持设置不同人员的各种权限(包括不同操作和各种科目的访问权限)。 第二、科目可以自定义,自定义入库后,在凭证中就能够通过下拉框选择的方式选择科目 第三、可以按时间段或者按天查询凭证、帐页和总账。凭证入库后,简单的点击操作就能查询任意时间段的凭证、帐页和总账 第四、有几种常用的报表(报表中有公式,还有软件自定义的元素,比如【期末.现金.贷】) 第五、日记账(可以设置分页,方便打印),日记账查询速度快,上万条几s内就出来了 第六、可以设置期末处理规则,比如设置好折旧、摊销等规则(试用中已经设置好)以后,只需要按一个按钮就能完成各个月的折旧、摊销。(这个功能比用友、金蝶更加灵活) 进销存管理子系统: 第一、支持平均法、先进先出法、个别辨认法 第二、科目可以自定义,自定义入库后,在凭证中就能够通过下拉框选择的方式选择科目 第三、可以按时间段或者按天查询凭证、帐页和总账。凭证入库后,简单的点击操作就能查询任意时间段的凭证、帐页和总账 另外:还有转下期的功能,可以提取上期(是指点击【转下期】按钮前)的期末数据和一些对下期有用的数据(比如有折旧等期末处理、可能需要资产清理的记录、进销存中各个物品的历史累计记录等)。这样第一有利于软件长期运行(因数据库中数据多了查询慢),第二也有利于企业数据分段存储(因转下期操作会自动产生新的数据库,并备份之前的数据库),想要查询之前的数据,只要通过文件夹重命名就能完成数据库的转换。 有一个月的账务数据,登录时(帮助上也有说明): 用户名:a 密码:a 身份:会计主管
为了设置Excel下拉框的多选功能,您可以按照以下步骤进行操作。 1. 打开Excel,并选择需要设置下拉框的单元格或单元格范围。 2. 在Excel菜单栏上的“数据”选项卡中,点击“数据验证”。 3. 在弹出的数据验证窗口中,选择“设置”选项卡。 4. 在“允许”下拉框中选择“序列”。 5. 在“来源”下拉框中输入您想要作为下拉选项的值,多个选项之间用逗号分隔,例如:东, 西, 南, 北。 6. 确保勾选了“忽略空值”和“提供下拉箭头”选项框。 7. 点击“确定”完成下拉框设置。 如果您希望通过VBA代码实现下拉框多选功能,您可以按照以下步骤进行操作。 1. 在Excel表中按下ALT+F11打开VBA编辑器。 2. 在左侧的“项目资源管理器”窗口中,双击需要添加代码的工作表。 3. 在VBA编辑器的代码窗口中,粘贴以下代码: ```VBA Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range If Target.Row < 2 Then Exit Sub '修改第一行(标题)不往下执行 For Each Rng In Target If Rng.Column = 1 Then '修改A列 Rng.Offset(0, 1).ClearContents '清除B列 Rng.Offset(0, 2).ClearContents '清除C列 End If Next End Sub ``` 4. 确保您将Excel文件保存为.xlsm类型,以便支持VBA宏。 5. 关闭VBA编辑器。 现在,当您在工作表中更改A列的值时,代码将自动清除B列和C列中的内容,以实现多选下拉框的效果。 希望这些信息能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值