zoukankan      html  css  js  c++  java
  • java poi excel操作 下拉菜单 及数据有效性


    1
    private InputStream updateTemplateStyleHSSF(InputStream inputStream,CsCustCon csCustCon) throws IOException, DAOException{ 2 HSSFWorkbook workbook = new HSSFWorkbook(inputStream); 3 HSSFSheet firstSheet= workbook.getSheetAt(0); 4 List<String> strList=csConAcceDao.getAcceNameAndNoListByConId(csCustCon); 5 String[] strs=(String[])strList.toArray(new String[strList.size()]); 6 7 String secondSheetName="合同附件名称和编号"; 8 HSSFSheet secondSheet= workbook.createSheet(secondSheetName); 9 if(null!=strs&&strs.length>0){ 10 for(int i=0;i<strs.length;i++){ 11 HSSFRow row=secondSheet.createRow(i); 12 HSSFCell cell= row.createCell(0); 13 cell.setCellValue(strs[i]); 14 } 15 } 16 Name name=workbook.createName(); 17 name.setNameName(secondSheetName); 18 name.setRefersToFormula(secondSheetName+"!$A$1:$A$"+strs.length); 19 CellRangeAddressList newStyleRange=new CellRangeAddressList(1,65535,0,0); 20 DVConstraint constraint=DVConstraint.createFormulaListConstraint(secondSheetName); 21 HSSFDataValidation dataValidation=new HSSFDataValidation(newStyleRange, constraint); 22 dataValidation.setShowPromptBox(true); 23 firstSheet.addValidationData(dataValidation); 24 25 ByteArrayOutputStream out=new ByteArrayOutputStream(); 26 workbook.write(out); 27 byte[] contents=out.toByteArray(); 28 InputStream newInputStream= new ByteArrayInputStream(contents); 29 return newInputStream; 30 }

    需求说明:excel 第一页 第一列为下拉菜单 菜单的数据在第二页全部显示出来

    如果 在第二页删除了一项 保存后  第一页第一列下拉菜单中 的数据就少一项

    List<String> strList=csConAcceDao.getAcceNameAndNoListByConId(csCustCon);

    这行代码为 返回下拉菜单中的数据

    参数 

    InputStream inputStream 为 file 对象生成的   file 对象则是 对应的要解析的excel 生成的

     ByteArrayOutputStream out=new ByteArrayOutputStream();
             workbook.write(out);
             byte[] contents=out.toByteArray();
             InputStream newInputStream= new ByteArrayInputStream(contents);     
             return newInputStream;

    这段代码为 excel 更新后   重新保存 excel 文件

    另:

    HSSFWorkbook  对象 只能处理 2003及以前版本
    XSSFWorkbook 对象  处理 2007及以后版本 

  • 相关阅读:
    算法学习:二分法从入门到精通
    TypeScript筑基笔记一:Visual Studio Code 创建Typescript文件和实时监控
    LeetCode 92. 反转链表 II
    LeetCode 1525. 字符串的好分割数目
    字节跳动-people后台一面面经
    LeetCode 117. 填充每个节点的下一个右侧节点指针 II
    LeetCode 1529. 灯泡开关 IV
    LeetCode 165. 比较版本号
    LeetCode 312. 戳气球
    LeetCode 605. 种花问题
  • 原文地址:https://www.cnblogs.com/feiye512/p/7767750.html
Copyright © 2011-2022 走看看