poi 3.17导出时建立超链接

本文介绍了一种在使用Java进行Excel导出时如何将某一列设置为可点击超链接的方法。通过SXSSFWorkbook类创建工作簿,并利用CreationHelper创建超链接,实现附件地址列的直接访问或下载功能。

网上找了很多只有这哥们是靠谱的完美的:
https://blog.youkuaiyun.com/lan_shu/article/details/103668081

公司有一个导出需求,其中一列为附件地址,要求点击能直接访问或下载,这个需要设置成超链接格式,下面是我参照网上的哥们做的

 SXSSFWorkbook wb = new SXSSFWorkbook(new XSSFWorkbook(),-1);//采用这种方式占用内存少,速度快
 CreationHelper creationHelper = wb.getCreationHelper();
 //指定超链接的类型为url
 Hyperlink hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
 //指定超链接的 目标地址   s  例如 :http://www.baidu.com
 hyperlink.setAddress(s);
 cell.setHyperlink(hyperlink);
 //设置单元格字体样式  不设置默认为黑色 无下划线 
 cell.setCellStyle(linkStyle(wb));
 //为超链接设置要显示的值  不设置 导出的单元格为空
 cell.setCellValue(s);

设置超链接样式

   /**
     * 设置超链接等样式
     *
     * @param workbook
     * @return
     */
    public static CellStyle linkStyle(Workbook workbook) {
        // 生成并设置另一个样式
        CellStyle linkStyle = workbook.createCellStyle();
        //设置单元格边框
        //        linkStyle.setBorderBottom((short) 1);
        //        linkStyle.setBorderLeft((short) 1);
        //        linkStyle.setBorderRight((short) 1);
        //        linkStyle.setBorderTop((short) 1);
        //设置单元格背景颜色
        //        linkStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
        //        linkStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        Font font = workbook.createFont();
        //设置字体下划线
        font.setUnderline((byte) 1);
        //设置字体颜色
        font.setColor(HSSFColor.BLUE.index);
        //设置字体
        linkStyle.setFont(font);
        // 生成另一个字体
        //        font.setBoldweight(Font.BOLDWEIGHT_NORMAL);
        // 把字体应用到当前的样式
        linkStyle.setFont(font);
        linkStyle.setAlignment(HorizontalAlignment.CENTER);
        return linkStyle;
    }

导出效果
在这里插入图片描述

### 使用 Apache POI 3.17 导出 Word 文档中的图片 为了从 Word 文档中提取图片,可以利用 `XWPFDocument` 类来解析 `.docx` 文件,并遍历其中的嵌入式对象以找到图像资源。下面是一个完整的 Java 方法用于此目的: ```java import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFPictureData; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.List; public class ExtractImagesFromDocx { public static void extractImages(String docxFilePath, String outputDirPath) throws Exception { try (FileInputStream fis = new FileInputStream(docxFilePath); XWPFDocument document = new XWPFDocument(fis)) { List<XWPFPictureData> pictures = document.getAllPictures(); if (pictures != null && !pictures.isEmpty()) { int count = 0; for (XWPFPictureData picture : pictures) { byte[] data = picture.getData(); String extension = "." + picture.suggestFileExtension(); FileOutputStream fos = new FileOutputStream(outputDirPath + "/image_" + (++count) + extension); fos.write(data); fos.close(); } } else { System.out.println("No images found."); } } } } ``` 这段代码展示了如何打开一个指定路径下的 `.docx` 文件,并从中读取所有的图片数据[^2]。对于每一个发现的图片,程序会将其保存至给定的目标目录下,命名为 `image_编号.扩展名` 的形式。 需要注意的是,在实际应用应确保目标文件夹存在并且应用程序有权限写入该位置;另外还需考虑异常处理机制以便更好地应对可能出现的各种错误情况。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值