栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现excel表格导出,带有下拉框

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现excel表格导出,带有下拉框

需求: 需要做一个模板表格导出的接口,生成一个excel表格,并且设置带有下拉框的单元格 代码实现 1. maven依赖

  org.apache.poi
     poi
     4.1.2
 
 
     org.apache.poi
     poi-ooxml
     4.1.2
 
2. controller
    @PostMapping("/downloadAdsourceTemplate")
    public void downloadAdsourceTemplate(@RequestBody AdSourceVo vo,HttpServletResponse response) throws IOException {
        Workbook workbook = aggregateService.downloadAdsourceTemplate(vo);
        String excelName = "批量导入代码位模板.xlsx";
        response.setContentType("application/octet-stream");
        // 指定下载的文件名
        response.setHeader("content-Disposition", "attachment;filename=" + excelName);
        response.flushBuffer();
        workbook.write(response.getOutputStream());
    }
3. serviceimpl
@Override
public Workbook downloadAdsourceTemplate(AdSourceVo vo) {
    //声明一个工作簿
    XSSFWorkbook workbook = new XSSFWorkbook();
    //表头行数据
    List header = new ArrayList<>();
    header.add("广告源");
    header.add("代码位");
    header.add("代码位名称");
    header.add("价格类型");
    header.add("价格");
    header.add("状态");

    //生成一个表格,设置表格名称
    XSSFSheet sheet = workbook.createSheet("批量导入代码位模板");
    //设置表格列宽度为30个字节
    sheet.setDefaultColumnWidth(30);
    //创建标题的显示样式
    CellStyle headerStyle = workbook.createCellStyle();
    headerStyle.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE.index);
    headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    headerStyle.setAlignment(HorizontalAlignment.CENTER);
    //创建第一行表头
    Row headrow = sheet.createRow(0);
    String[] heads = header.toArray(new String[0]);
    for (int i = 0; i < heads.length; i++) {
        Cell cell = headrow.createCell(i);
        cell.setCellValue(heads[i]);
        cell.setCellStyle(headerStyle);
    }

    
     Row row = sheet.createRow(1);
     Cell cell = row.createCell(0);
     cell.setCellValue("穿山甲");

     cell = row.createCell(1);
     cell.setCellValue("123456");

     cell = row.createCell(2);
     cell.setCellValue("测试代码位");

     cell = row.createCell(3);
     cell.setCellValue("固价");

     cell = row.createCell(4);
     cell.setCellValue("10");

     cell = row.createCell(5);
     cell.setCellValue("开启");

     cell = row.createCell(6);
     XSSFCellStyle cellStyle = workbook.createCellStyle();
     XSSFFont font = workbook.createFont();
     //设置字体颜色为红色
     font.setColor(IndexedColors.RED.getIndex());
     cellStyle.setFont(font);
     cell.setCellStyle(cellStyle);
     cell.setCellValue("示例数据,请勿操作!");

    
    Map platMap = logService.getPlatMap();
    String platName = platMap.get(String.valueOf(vo.getPlatId()));
    //下拉框数据
    List selecDatatArray = new ArrayList<>();

    String[] settleType = {"固价","竞价"}  ;
    String[] sts = {"开启","关闭"}  ;

    selecDatatArray.add(new String[]{platName});
    selecDatatArray.add(settleType);
    selecDatatArray.add(sts);
    //下拉框列位置
    List colNums = new ArrayList<>();
    colNums.add(0);
    colNums.add(3);
    colNums.add(5);


    
    for (int i = 0; i < selecDatatArray.size() ; i++){
        String[] selectData = selecDatatArray.get(i);
        Integer colNum = colNums.get(i);
        //设置下拉框位置  开始行 结束行  开始列 结束列

        DataValidationHelper helper=sheet.getDataValidationHelper();
        //获取需要生成下拉框的格   开始行 结束行  开始列 结束列
        CellRangeAddressList addressList = new CellRangeAddressList(1, 100, colNum, colNum);
        //设置下拉框数据
        DataValidationConstraint constraint = helper.createExplicitListConstraint(selectData);
        DataValidation dataValidation = helper.createValidation(constraint, addressList);

        sheet.addValidationData(dataValidation);
    }

    return workbook;
}

效果图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号