POI增加验证列

List<String> nationality = new ArrayList<String>();List<String> last_education = new ArrayList<String>();List<String> graduated_yotei = new ArrayList<String>();List<String> entrance_period = new ArrayList<String>();List<String> sexList =     new ArrayList<String>();
Map<int[],List<String>> dataMap = new HashMap<int[],List<String>>();dataMap.put(new int[]{1,2000,5,5},nationality);dataMap.put(new int[]{1,2000,8,8},last_education);dataMap.put(new int[]{1,2000,17,17},graduated_yotei);dataMap.put(new int[]{1,2000,13,13},courseNames);dataMap.put(new int[]{1,2000,6,6},sexList);dataMap.put(new int[]{1,2000,12,12},entrance_period);//ExcelUtil.setSheetDropList(xlsTemplateFileName, outputFileName, dataMap, 0);ExcelUtil.setSheetDropList(xlsTemplateFileName, outputFileName, dataMap, 0,1);
public static void setSheetDropList(String xlsTemplateFileName, String outputFileName,Map<int[],List<String>> dataMap,int sheetIndex,int hideSheetIndex) throws IOException {FileInputStream fileInputStream = new FileInputStream(xlsTemplateFileName);FileUtils.forceMkdirParent(new File(outputFileName));if(xlsTemplateFileName.toLowerCase().endsWith("xlsx")){// ファイルの読み込みXSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);// hide sheet を取得するXSSFSheet hideSheet = workbook.getSheetAt(hideSheetIndex);String hideSheetName = hideSheet.getSheetName();//setValue(Sheet sheet, int rowIndex, int cellIndex, Object value)// sheetを取得するXSSFSheet sheet = workbook.getSheetAt(sheetIndex);XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);for (Map.Entry<int[],List<String>> entry : dataMap.entrySet()) {int[] postions =  entry.getKey();List<String> list =  entry.getValue();if(list == null ||  list.size()==0) {continue;}//{1,2000,8,8}for(int i=0;i<list.size();i++) {int rowIndex = postions[0]+ i;int cellIndex = postions[2]  ;String value = list.get(i);setValue(hideSheet,rowIndex,cellIndex,value);}String[] array = new String[list.size()];String[] data=list.toArray(array);// ボックスのオプションのデータは、制約としてXSSFDataValidationConstraint dvConstraint =(XSSFDataValidationConstraint) dvHelper.createExplicitListConstraint(data);          //new String[]{"a", "b", "c"}// ドロップダウンボックスの範囲に設定するCellRangeAddressList addressList =new CellRangeAddressList(postions[0],postions[1],postions[2],postions[3]);// DataValidationオブジェクトを作成する
/*                  XSSFDataValidation validation =(XSSFDataValidation)dvHelper.createValidation(dvConstraint, addressList);validation.setShowErrorBox(true);*///String strFormula = "temp!$A$1:$A$100";String  lie =   excelColIndexToStr(postions[2]+1);String  heng_start = (postions[0]+1) +"";String  heng_end =( postions[0] + list.size()) + "";String   strFormula = hideSheetName +"!$"+lie +"$" + heng_start + ":$"+lie + "$"+heng_end;// =$F$2:$F$7XSSFDataValidationConstraint constraint = new XSSFDataValidationConstraint(ValidationType.LIST,strFormula);XSSFDataValidation validation = (XSSFDataValidation)dvHelper.createValidation(constraint, addressList);sheet.addValidationData(validation);// 指定したワークシートに作用するsheet.addValidationData(validation);}FileOutputStream stream = new FileOutputStream(outputFileName);workbook.write(stream);stream.close();workbook.close();}else if(xlsTemplateFileName.toLowerCase().endsWith("xls")) {// ファイルの読み込みHSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);// hide sheet を取得するHSSFSheet hideSheet = workbook.getSheetAt(hideSheetIndex);// sheetを取得するHSSFSheet sheet = workbook.getSheetAt(0);HSSFDataValidationHelper dvHelper = new HSSFDataValidationHelper(sheet);for (Map.Entry<int[],List<String>> entry : dataMap.entrySet()) {int[] postions =  entry.getKey();List<String> list =  entry.getValue();//{1,2000,8,8}for(int i=0;i<list.size();i++) {int rowIndex = postions[0]+ i;int cellIndex = postions[2] ;String value = list.get(i);setValue(hideSheet,rowIndex,cellIndex,value);}String[] array = new String[list.size()];String[] data=list.toArray(array);// ボックスのオプションのデータは、制約としてDataValidationConstraint dvConstraint =dvHelper.createExplicitListConstraint(data);// ドロップダウンボックスの範囲に設定するCellRangeAddressList addressList =new CellRangeAddressList(postions[0],postions[1],postions[2],postions[3]);// DataValidationオブジェクトを作成するHSSFDataValidation validation =(HSSFDataValidation)dvHelper.createValidation(dvConstraint, addressList);validation.setShowErrorBox(true);// 指定したワークシートに作用するsheet.addValidationData(validation);}FileOutputStream stream = new FileOutputStream(outputFileName);workbook.write(stream);stream.close();workbook.close();}}

POI增加 数据验证 下拉相关推荐

  1. excel下拉菜单自动匹配_自动将新项目添加到Excel数据验证下拉菜单

    excel下拉菜单自动匹配 There's a sample Excel workbook on my Contextures website that uses a bit of Excel VBA ...

  2. 用mescroll实现无限上拉增加数据,下拉刷新数据 (学习笔记)

    最近自己做一个web app需要用到上拉查询下页数据,网上看了很多很多帖子,发现并不能快速的套用,总是会出现各种问题无法使用,于是无奈自己跑去看了官方api文档,终于做了出来,至此做个笔记,以后用到可 ...

  3. poi下载模板含下拉框

    poi下载模板含下拉框 第一种方法 新建QuestionsImport类import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.u ...

  4. FineReport 报表数据根据下拉框的值进行数据联动

    FineReport 报表数据根据下拉框的值进行数据联动,不用点击查询按钮 1.新建数据库查询,获得数据. SELECT * FROM [销量] where 地区 ='${area}' 2.把需要展示 ...

  5. html 下拉滚动加载,原生js滚动到底部加载数据和下拉刷新 Scrollload

    初衷 如今移动端站点越来越多,滚动到底部加载数据和下拉刷新的需求非常的常见,即使现在很多pc站点也会有这样的需求,比如百度首页就有.虽然简单的完成这么一个功能非常方便,但是滚动往往会成为性能的瓶颈,处 ...

  6. 原生js滚动到底部加载数据和下拉刷新 Scrollload

    原文地址 https://github.com/fa-ge/Scrollload/blob/master/README.md 初衷 如今移动端站点越来越多,滚动到底部加载数据和下拉刷新的需求非常的常见 ...

  7. Vue 学习——表格列表数据显示百分号%、显示数字改为自定义内容、数据表头下拉、点击筛选数据

    目录 Vue 格式formatter 1.Vue表格列表数据显示百分号% 2.Vue显示数字改为自定义内容 Vue element-ui 数据表头下拉,点击筛选数据 Vue 格式formatter 初 ...

  8. java导出Excel增加下拉框选项,解决小数据量和大数据量下拉框选项的问题

    文章目录 java导出Excel增加下拉框选项 一.小数据量情况 二.大数据量情况 java导出Excel增加下拉框选项(java结合easyExcel) 添加传参模型ConsumablesAddDT ...

  9. Ant Design of Vue +TS 表单动态增加数据验证卧坑姿势

    文章目录 Update 20210601 Update 20210525 原文: 1.a-form的model 2.获取数据 源码 Update 20210601 今天做别的页面的时候发现又取不到数据 ...

最新文章

  1. C# 使用xsd文件验证XML 格式是否正确
  2. 机器学习中需要了解的 5 种采样方法
  3. Linux的文件权限
  4. JSON WEB TOKEN(JWT)的分析
  5. 北京君正集成电路的Newton平台--穿戴式
  6. vscode 加参数运行_VSCode 调试 Webpack 指南
  7. 【竞赛经验分享】2020腾讯广告算法大赛:如何突破分数瓶颈?
  8. 服务器端Session和客户端Session
  9. 按钮旁边加一个提示_地铁站的那些“红色按钮”,你知道是干啥用的吗?乱按可能被拘留...
  10. 鸿蒙系统 产品,华为首款鸿蒙系统产品成行业公敌!只因开机无广告:遭十大品牌批评...
  11. Laravel核心解读--Database(二) 查询构建器
  12. 90万餐饮商家全店五折 支付宝首次以数字生活平台身份参加双11
  13. echarts地图展示
  14. 计算机晶体管怎么工作原理,晶体管的工作原理和实际作用
  15. android studio 顶部菜单栏消失了如何恢复
  16. modbus寄存器、功能码、报文结构解析
  17. JS的特性:异步 + 事件驱动
  18. 如何自己动手给笔记本电脑增加内存
  19. IDEA导入UAPStudio(Eclipse)创建的项目
  20. Web 安全恩仇录:漏洞原理

热门文章

  1. 靶场练习第二十五天~vulnhub靶场之Raven-2
  2. Error: Flash Download failed - Target DLL has been cancelled
  3. eshop.sql(复制的时候注意路径!!!)
  4. mysql 任务计划 /etc/cron.d_Linux /etc/cron.d增加定时任务
  5. 汇编语言-008(条件跳转应用 、loopnz 条件循环指令使用 、loopz 条件循环指令使用 、 if语句编写汇编时 、while语句编写汇编时 、循环内的if语句嵌套)
  6. 电脑PHP漏洞啥意思,PHP漏洞详解
  7. python控制手机自动刷新闻_Python控制android手机实现微信自动跳一跳
  8. 蒙特卡洛法求圆周率100亿数据
  9. linux操作系统之进程组及会话
  10. Linux内核驱动之GPIO子系统(一)GPIO的使用