前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >poi导出excel中含有超链接并且头部样式问题

poi导出excel中含有超链接并且头部样式问题

作者头像
全栈程序员站长
发布2021-04-07 11:09:34
6370
发布2021-04-07 11:09:34
举报
文章被收录于专栏:全栈程序员必看

多余的代码网上都有就不多贴了 我这边的sheet来自于writer 各位看官可自行改成自己的

path是地址,name是那一列存的附件名称,i是行数 j是列数

代码语言:javascript
复制
   private void createSuperLink(ExcelWriter writer,String path,String name,int i,int j){     
        Workbook workbook = writer.getWorkbook();
        Sheet sheet = writer.getSheet();
        // 获取行
        Row row = sheet.getRow(i+1);
        if(row==null){
            row = sheet.createRow(i+1);
        }
        // 获取列
        Cell cell = row.getCell(j+6);
        if(cell==null){
            cell = row.createCell(j+6);
        }
        CreationHelper createHelper = workbook.getCreationHelper();
        CellStyle linkStyle = workbook.createCellStyle();
        Font cellFont = workbook.createFont();
        cellFont.setColor(IndexedColors.BLUE.index);
        linkStyle.setFont(cellFont);

        //底部边框
        linkStyle.setBorderTop(BorderStyle.THIN);
        linkStyle.setTopBorderColor(IndexedColors.BLACK.index);

        //底部边框
        linkStyle.setBorderBottom(BorderStyle.THIN);
        linkStyle.setBottomBorderColor(IndexedColors.BLACK.index);

        //左边框颜色
        linkStyle.setBorderRight(BorderStyle.THIN);
        linkStyle.setRightBorderColor(IndexedColors.BLACK.index);

        cell.setCellStyle(linkStyle);
        // 地址存在时才是超链接
        if(path!=null){
            Hyperlink link = createHelper.createHyperlink(HyperlinkType.URL);
            link.setAddress(path);
            cell.setHyperlink(link);
        }
        cell.setCellValue(name);
}

实现效果

还有由于我的附件头部是后期合并 因为要计算附件的最大数目进行合并,导致了右边框没有边线

代码如下max为附件最大个数 其中本来我只用了获取列 结果发现设置边线失败 后面用获取尾列才ok的

代码语言:javascript
复制
    private void createAppendHead(ExcelWriter writer,int max){
        Sheet sheet = writer.getSheet();
        // 合并
        sheet.addMergedRegion(new CellRangeAddress(0,0,6,max+5));
        // 获取行
        Cell headCell = sheet.getRow(0).getCell(0);
        // 获取列
        Cell targetCell = sheet.getRow(0).createCell(6);
        // 获取合并列尾
        Cell targetEndCell = sheet.getRow(0).createCell(5+max);
        // 设置样式
        targetCell.setCellStyle(headCell.getCellStyle());
        targetEndCell.setCellStyle(headCell.getCellStyle());
        // 设置内容
        targetCell.setCellValue("附件");

    }

发布者:全栈程序员栈长,转转请注明出处:https://javaforall.cn/2205.html原文链接:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月9日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档