当前位置: 首页 > news >正文

小学网站建设武汉seo系统

小学网站建设,武汉seo系统,极简主义 网站,网站建设 如何友情链接apache poi 提供了 DataValidation​ 接口 让我们可以轻松实现 Excel 下拉框数据局校验。但是下拉框联动校验是无法直接通过 DataValidation ​实现,所以我们可以通过其他方式间接实现。 ‍ 步骤如下: 创建一个隐藏 sheet private static void create…

apache poi 提供了 DataValidation​ 接口 让我们可以轻松实现 Excel 下拉框数据局校验。但是下拉框联动校验是无法直接通过 DataValidation ​实现,所以我们可以通过其他方式间接实现。

步骤如下:

  1. 创建一个隐藏 sheet
 private static void createHiddenSheet(List<String> provinceList, Map<String, String[]> regionMap, Workbook workbook) {String hiddenSheetName = "region";Sheet hiddenSheet = workbook.createSheet(hiddenSheetName);// 这里也可以设置 hidden 为 false 这样可以直接看到 sheet 内容workbook.setSheetHidden(workbook.getSheetIndex(hiddenSheet), true);}
  1. 将数据放入隐藏 sheet
        int rowNum = 0;// 第一行存放省数据Row row = hiddenSheet.createRow(rowNum);for (int i = 0; i < provinceList.size(); i++) {Cell cell = row.createCell(i);cell.setCellValue(provinceList.get(i));}rowNum++;for (String key : regionMap.keySet()) {String[] dataArray = regionMap.get(key);// 循环创建行,每行存放一个数组row = hiddenSheet.createRow(rowNum);// key 放在每行第一个,value 放在每行的后面Cell keyCell = row.createCell(0);keyCell.setCellValue(key);for (int i = 0, length = dataArray.length; i < length; i++) {Cell cell = row.createCell(i + 1);cell.setCellValue(dataArray[i]);}Name name = workbook.createName();// 将key 设置为下拉框的keyname.setNameName(key);String formula = hiddenSheetName + "!$B$" + (rowNum + 1) + ":$" + (convertNumberToLetter(dataArray.length + 1)) + "$" + (rowNum + 1);name.setRefersToFormula(formula);// 可以将formula 放在最后一列Cell formulaCell = row.createCell(dataArray.length + 1);formulaCell.setCellValue(formula);rowNum++;}
  1. 在主 sheet 中使用 formula 来使用隐藏 sheet 的数据
    DataValidationHelper helper = mainSheet.getDataValidationHelper();// 设置省份下拉框CellRangeAddressList provRangeAddressList = new CellRangeAddressList(1, 1000, 0, 0);// formula 为  region!$A$1:$E$1DataValidationConstraint dvConstraint = helper.createFormulaListConstraint("region!$A$1:$" + (convertNumberToLetter(provinceList.size())) + "$1");DataValidation provinceDataValidation = helper.createValidation(dvConstraint, provRangeAddressList);provinceDataValidation.setSuppressDropDownArrow(true);mainSheet.addValidationData(provinceDataValidation);
  1. 设置联动下拉框 DataValidation
 // 设置市下拉框  firstCol lastCol 根据实际情况设置CellRangeAddressList cityRange = new CellRangeAddressList(1, 1000, 1, 1);DataValidationConstraint cityConstraint = helper.createFormulaListConstraint("INDIRECT(A2)");DataValidation cityValidation = helper.createValidation(cityConstraint, cityRange);mainSheet.addValidationData(cityValidation);// 设置县下拉框 firstCol lastCol 根据实际情况设置CellRangeAddressList districtRange = new CellRangeAddressList(1, 1000, 2, 2);DataValidation districtValidation = helper.createValidation(helper.createFormulaListConstraint("INDIRECT(B2)"), districtRange);mainSheet.addValidationData(districtValidation);
  1. 完整代码如下:
package com.shang;import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/**
* @author: shangwei
* @date: 2024/11/3 13:01
*/
public class ExcelUtil {public static void createExcel(String path, List<String> provinceList, Map<String, String[]> regionMap) {try {Workbook workbook = new XSSFWorkbook();createHiddenSheet(provinceList, regionMap, workbook);Sheet mainSheet = workbook.createSheet("mainSheet");// 主sheet 第一行数据String[] titles = {"省", "市", "县"};int rowNum = 0;Row row = mainSheet.createRow(rowNum);for (int i = 0; i < titles.length; i++) {Cell cell = row.createCell(i);cell.setCellValue(titles[i]);}DataValidationHelper helper = mainSheet.getDataValidationHelper();// 设置省份下拉框CellRangeAddressList provRangeAddressList = new CellRangeAddressList(1, 1000, 0, 0);// formula 为  region!$A$1:$E$1DataValidationConstraint dvConstraint = helper.createFormulaListConstraint("region!$A$1:$" + (convertNumberToLetter(provinceList.size())) + "$1");DataValidation provinceDataValidation = helper.createValidation(dvConstraint, provRangeAddressList);provinceDataValidation.setSuppressDropDownArrow(true);mainSheet.addValidationData(provinceDataValidation);// 设置市下拉框  firstCol lastCol 根据实际情况设置CellRangeAddressList cityRange = new CellRangeAddressList(1, 1000, 1, 1);DataValidationConstraint cityConstraint = helper.createFormulaListConstraint("INDIRECT(A2)");DataValidation cityValidation = helper.createValidation(cityConstraint, cityRange);mainSheet.addValidationData(cityValidation);// 设置县下拉框 firstCol lastCol 根据实际情况设置CellRangeAddressList districtRange = new CellRangeAddressList(1, 1000, 2, 2);DataValidation districtValidation = helper.createValidation(helper.createFormulaListConstraint("INDIRECT(B2)"), districtRange);mainSheet.addValidationData(districtValidation);FileOutputStream fileOutputStream = new FileOutputStream(path);workbook.write(fileOutputStream);} catch (Exception e) {e.printStackTrace();}}private static void createHiddenSheet(List<String> provinceList, Map<String, String[]> regionMap, Workbook workbook) {String hiddenSheetName = "region";Sheet hiddenSheet = workbook.createSheet(hiddenSheetName);int rowNum = 0;// 第一行存放省数据Row row = hiddenSheet.createRow(rowNum);for (int i = 0; i < provinceList.size(); i++) {Cell cell = row.createCell(i);cell.setCellValue(provinceList.get(i));}rowNum++;for (String key : regionMap.keySet()) {String[] dataArray = regionMap.get(key);// 循环创建行,每行存放一个数组row = hiddenSheet.createRow(rowNum);// key 放在每行第一个,value 放在每行的后面Cell keyCell = row.createCell(0);keyCell.setCellValue(key);for (int i = 0, length = dataArray.length; i < length; i++) {Cell cell = row.createCell(i + 1);cell.setCellValue(dataArray[i]);}Name name = workbook.createName();// 将key 设置为下拉框的keyname.setNameName(key);String formula = hiddenSheetName + "!$B$" + (rowNum + 1) + ":$" + (convertNumberToLetter(dataArray.length + 1)) + "$" + (rowNum + 1);name.setRefersToFormula(formula);// 可以将formula 放在最后一列Cell formulaCell = row.createCell(dataArray.length + 1);formulaCell.setCellValue(formula);rowNum++;}// 这里也可以设置 hidden 为 false 这样可以直接看到 sheet 内容workbook.setSheetHidden(workbook.getSheetIndex(hiddenSheet), true);}/*** 将数字 1 到 26 转换为对应的字母 A 到 Z。** @param number 要转换的数字,范围是 1 到 26。* @return 对应的字母。*/public static String convertNumberToLetter(int number) {if (number < 1 || number > 26) {throw new IllegalArgumentException("Number must be between 1 and 26");}return String.valueOf((char) ('A' + number - 1));}public static void main(String[] args) {Map<String, String[]> regionMap = new HashMap<>();List<String> provinceList = Arrays.asList("湖北省", "湖南省", "广东省", "江苏省", "浙江省");regionMap.put("湖北省", new String[]{"武汉市", "黄石市", "十堰市", "宜昌市", "襄樊市", "鄂州市", "荆门市", "孝感市", "荆州市", "黄冈市", "咸宁市", "随州市"});regionMap.put("湖南省", new String[]{"长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市", "常德市", "张家界市", "益阳市", "郴州市", "永州市", "怀化市"});regionMap.put("广东省", new String[]{"广州市", "韶关市", "深圳市", "珠海市", "汕头市", "佛山市", "江门市", "湛江市", "茂名市", "肇庆市", "惠州市", "梅州市", "汕尾市", "河源市", "阳江市", "清远市"});regionMap.put("江苏省", new String[]{"南京市", "无锡市", "徐州市", "常州市", "苏州市", "南通市", "连云港市", "淮安市", "盐城市", "扬州市", "镇江市", "泰州市", "宿迁市"});regionMap.put("浙江省", new String[]{"杭州市", "宁波市", "温州市", "嘉兴市", "湖州市", "绍兴市", "金华市", "衢州市", "舟山市", "台州市", "丽水市"});regionMap.put("武汉市", new String[]{"江岸镇", "江汉镇", "江夏镇", "硚口镇", "武昌镇", "江夏镇"});regionMap.put("黄石市", new String[]{"黄石港镇", "西塞山镇", "下陆镇", "大冶镇", "大冶镇"});String path = "/Users/shangwei/Desktop/example" + System.currentTimeMillis() + ".xlsx";createExcel(path, provinceList, regionMap);}}

相关 Maven 依赖

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency>

运行截图:

​​运行截图

http://www.hkea.cn/news/429546/

相关文章:

  • wordpress 发短信西安网络优化大的公司
  • dreamweaver个人网站南宁求介绍seo软件
  • 网站常用素材企业培训视频
  • 北京市通州区建设委员会网站网站新站整站排名
  • 太原网站推广只选中联传媒推广排名seo
  • 企业网站建设的常见流程为百度互联网营销顾问
  • 养殖企业网站网络营销策划名词解释
  • 如何进行电子商务网站推广?百度网盘app
  • 做情趣网站需要什么资质sem推广外包
  • 国外网站做任务赚钱的最近新闻有哪些
  • 建设部网站查资质中裕隆百度推广登录平台网址
  • 黄页网站大全免费山东网络推广优化排名
  • 网站文字代码常见的网络营销工具
  • 计算机毕设网站建设怎么改长沙网站设计拓谋网络
  • 类似红盟的网站怎么做aso优化推广
  • vs2013做网站怎样制作免费网页
  • b2c网站的开发无锡网络优化推广公司
  • 网站做视频在线观看营销活动推广方案
  • wordpress多站点统计google图片搜索引擎入口
  • 麻章手机网站建设百度网盘提取码入口
  • 网站后台管理系统的重要技术指标sem竞价托管费用
  • 包头怎样做网站我想做电商怎么加入
  • 株洲企业网站建设品牌2023免费b站推广大全
  • 仿制单页面网站多少钱免费制作网站app
  • 商城网站制作网站长尾词挖掘工具
  • 夹克定制公司trinseo公司
  • 四川智能网站建设制作网站链接分析工具
  • 制作销售网站有哪些宁波网络营销推广咨询报价
  • 佛山做外贸网站服务新闻发稿平台
  • 做网站前怎么写文档域名收录