社区
Java SE
帖子详情
使用jxl生成两级动态下拉菜单
yzyz0812
2014-09-24 02:24:00
我有一个excel表,想用jxl读取人名那一列和商店名称的那一列,制作一个动态的下拉菜单,但是人名和商店名都是会变化的,这样怎么实现呢?下拉菜单想实现类似于淘宝填收货地址那样的样式
...全文
183
3
打赏
收藏
使用jxl生成两级动态下拉菜单
我有一个excel表,想用jxl读取人名那一列和商店名称的那一列,制作一个动态的下拉菜单,但是人名和商店名都是会变化的,这样怎么实现呢?下拉菜单想实现类似于淘宝填收货地址那样的样式
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yzyz0812
2014-09-24
打赏
举报
回复
我需要的菜单是在Java中做,不是在Excel里
ghx287524027
2014-09-24
打赏
举报
回复
目前2003和2007的下拉表其实只是到32766个,范围再高也没有用了。 方法需要sheet,要做下拉的单元格,以及打算放置数据的单元格,还有数据了。 返回的是截止点的下个单元格的位置,可以为下个单元格放置数据。 另外,jxl不支持2007,但poi支持而且做这个也简单
ghx287524027
2014-09-24
打赏
举报
回复
/** * @param sheet * @param target 要设置数据验证性的单元格位置 * @param current 要存放验证性数据的单元格位置 * @param step * @param data * @return */ private static int[] buildDataValidationCell(WritableSheet sheet, int[] target, int[] current, List<String> data) { try { if (data.size() == 0) return current; List<String> strings = new ArrayList<String>(); for (String d : data) { if (d!= null&& !"".equals(d.trim())) strings.add(d); } if(strings.size()>65535) throw new RuntimeException("excel2003单列上限,数据验证只能使用单列或单行"); //excel2003上限是65535,所以隐藏的行数超过5w就换另外一列, //列上限是255。暂时不考虑行列都到上限的情况 if (current[1] > 50000 ||(current[1] > 50000 && strings.size()>15535)) { current[0] = current[0] + 1; current[1] = 0; } //构建下拉数据范围 buildDataValidationRange(sheet, target, current, strings); //设置隐藏 CellView cv = new CellView(); cv.setHidden(true); sheet.setColumnView(current[0], cv); //填充数据 for (String s : strings) { Label b = new Label(current[0], current[1], s); sheet.addCell(b); current[1] += 1; } } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } return current; } //构建下拉数据范围 private static void buildDataValidationRange(WritableSheet sheet, int[] target, int[] current, List<String> strings) throws WriteException, RowsExceededException { WritableCellFeatures wcf = null; Label targetCell = new Label(target[0], target[1], strings.get(0));//数据验证初始cell wcf = new WritableCellFeatures(); StringBuffer buff = new StringBuffer();//数据验证范围 CellReferenceHelper.getCellReference(current[0] , true,current[1], true, buff);//起点 buff.append(":"); CellReferenceHelper.getCellReference(current[0] , true,current[1] + strings.size() - 1, true, buff);//终点 wcf.setDataValidationRange(buff.toString());//设置数据验证性 targetCell.setCellFeatures(wcf); sheet.addCell(targetCell); }
高校如何提升科研项目评价的科学性与效率?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
科技服务机构如何为委托方提供专业、高效的项目评估与成果转化服务?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
2026年最新桐乡市公交线路及站点矢量数据.zip
数据格式:shp 数据坐标:GCJ02 数据更新时间:2026年9月 公交线路来源:8684网站 https://8684.com.cn/ 站点数据来源:高德API接口 数据打开方式:QGIS或Arcgis 站点数据字段:名称、序号、对应线路、几何信息 线路数据字段:名称、类型、起点、终点、开始时间、结束时间、起步价、全价、长度、公司、几何信息
上海大众-自学手册238-CAN总线上的数据交换
上海大众_自学手册238_CAN总线上的数据交换
【嵌入式开发】基于C语言的抽象工厂模式设计:嵌入式系统中可扩展设备驱动创建框架实现
内容概要:本文以C语言实现抽象工厂模式为核心,通过具体代码示例详细讲解了如何在C语言中应用这一创建型设计模式。文章借助水果店销售不同颜色苹果和葡萄的案例,展示了如何利用函数指针构建抽象工厂,从而根据客户需求创建一系列相关或相互依赖的对象,而无需指定具体的实现类。文中包含了完整的结构体定义、函数实现以及内存分配与断言处理,体现了C语言面向对象编程的思想。 适合人群:熟悉C语言基础并希望深入理解设计模式的初级至中级开发者,尤其适用于嵌入式系统或底层开发人员。
使用
场景及目标:①掌握在C语言中如何模拟面向对象的抽象工厂机制;②理解如何通过函数指针实现多态和模块化设计;③应用于需要解耦对象创建与
使用
的软件架构中,提升代码可维护性和扩展性。 阅读建议:建议读者结合代码逐段分析,动手实践每个模块的编写与调试,深入理解抽象工厂模式在非面向对象语言中的实现原理和工程价值。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章