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

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

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

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

   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);
}

实现效果

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

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

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

    
    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.net/2205.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql server2000数据库置疑_数据库置疑什么原因

    sql server2000数据库置疑_数据库置疑什么原因搜索热词先分离数据库企业管理器–右键suspect的数据库–所有任务–分离数据库然后备份你的suspect数据库的文件,再按下面的步骤处理:1.新建一个同名的数据库2.再停掉sqlserver3.用suspect数据库的文件覆盖掉这个新建的同名数据库4.再重启sqlserver5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)USEMA…

    2022年8月20日
    7
  • DatabaseMetaData元数据

    DatabaseMetaData元数据通过java.sql.DatabaseMetaData接口,您可以获得有关您已连接到的数据库的元数据。例如,你可以看到哪些表的数据库,和什么中定义的列的每个表的数量,是否是给定功能支持等。DatabaseMetaData接口包含很多的方法,和并不是所有将在本教程中覆盖。你应该看看的JavaDoc。此文本将只是覆盖面不够,给你一种感觉,你可以用它。获得一个DatabaseMetaData实例

    2022年6月19日
    24
  • 如何让你的网站用上免费的HTTPS「建议收藏」

    如何让你的网站用上免费的HTTPS

    2022年3月3日
    56
  • Java内存管理

    Java内存管理

    2020年11月12日
    199
  • 交叉线与直通线的区别

    交叉线与直通线的区别网线分为两种:直通线和交叉线。1>直通线:标准线,两端都采用568B做线标准。两端的线序对是:1、白橙、2、橙、3、白绿、4、蓝、5、白蓝、6、绿、7、白棕、8、棕。注意两端都是同样的线序且一一对应,这种线就是我们平时最常用的网线。直通线一般连接不同的设备,比如电脑和路由器。2>交叉线:反线,一端采用568B做线标准,一端采用568A的标准。一端的线序对是:1、白橙、2、橙

    2022年6月19日
    33
  • 移动端开发之Web App开发

    移动端开发之Web App开发写在前面:本人刚刚接触移动端开发,希望自己的见解能够帮助到他人,不足之处还望提醒。1移动端开发分类1.1NativeApp原生App开发优点:(1)用户体验好(2)性能稳定(3)操作速度快(4)能够访问本地资源(通讯录,相册)(5)能够设计出色的动效,转场(6)拥有系统级别的贴心通知或提醒(7)用户留存率高缺点:(1)开发成本高(2)维护成本高(3)更新缓慢,根据不同平台,提交–审核–上线…

    2022年6月17日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号