poi导出Excel实现下拉框问题

因为客户新需求,导出的Excel需要三级级联,以及单个下拉框问题。
刚刚处理完,分开记录一下,方便下次查阅(动态导出三级级联Excel后续会更新)。

		// 创建一个excel  
        XSSFWorkbook book = new XSSFWorkbook();
        // 创建需要用户填写的sheet 
        XSSFSheet sheetPro = (XSSFSheet) book.createSheet("SheetName"); 
        //设置前x行冻结
        sheetPro.createFreezePane(0,1,0,1);
        // 产生表格标题行
        Row row0 = sheetPro.createRow(0);
        
        row0.createCell(0).setCellValue("title01");
        //title02需要下拉
        row0.createCell(1).setCellValue("title02");
        row0.createCell(2).setCellValue("title03");
        
			//下拉值,设置下拉控制的范围
 			CellRangeAddressList regions = new CellRangeAddressList(1, 50, 1, 1);
 			// 生成下拉框内容 
 			// 绑定下拉框和作用区域
    		String[] strings = new String[] { "列1", "列2", "列3"};
    		DataValidationConstraint constraint = dvHelper.createExplicitListConstraint(strings);
    		DataValidation data_validation = dvHelper.createValidation(constraint,regions );
    		//验证
    		data_validation.createErrorBox("错误", "请选择下拉框的值");  
    		data_validation.setShowErrorBox(true);  
    		data_validation.setSuppressDropDownArrow(true); 
    		// 对sheet页生效
    		sheetPro.addValidationData(data_validation);
    		OutputStream  os = null; 
    		
      //设置默认文件名为当前时间:年月日时分秒
        String fileName=new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()).toString();
        
      	//设置response头信息
		
        response.setContentType("application/vnd.ms-excel; charset=utf-8");
        response.setHeader("Content-disposition", "attachment;filename= " + fileName+".xlsx");
        response.setCharacterEncoding("utf-8");
        //其实这就是为了将导出的Excel发到浏览器,可以选择路径保存
        try {  
        	os= response.getOutputStream();  
            book.write(os);
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            IOUtils.closeQuietly(os);
        }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值