Apache POI无法打开嵌入文件
创始人
2024-09-04 18:00:46
0

要解决Apache POI无法打开嵌入文件的问题,可以尝试以下方法:

  1. 确保嵌入文件的路径正确:首先,确保你提供给POI的嵌入文件路径是正确的。可以使用绝对路径或相对路径,确保路径指向正确的位置。

  2. 使用正确的文件类型:确保你提供给POI的文件类型与实际文件类型匹配。例如,如果你嵌入的是一个Excel文件,确保你使用HSSFWorkbook或XSSFWorkbook来打开它,而不是使用HWPFDocument或XWPFDocument。

  3. 使用正确的嵌入文件对象:在使用POI打开嵌入文件之前,你需要先获取到嵌入文件的对象。你可以使用getEmbeddedFiles方法来获取嵌入文件的列表,并使用getEmbeddedFileData方法来获取嵌入文件的数据。确保你使用正确的方法来获取嵌入文件对象。

下面是一个使用Apache POI打开嵌入文件的示例代码:

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
import org.apache.poi.poifs.filesystem.Entry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import java.io.FileOutputStream;
import java.io.IOException;

public class EmbeddedFileExample {

    public static void main(String[] args) {
        try {
            // 加载Excel文件
            POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("example.xls"));
            HSSFWorkbook workbook = new HSSFWorkbook(fs);

            // 获取嵌入文件的根目录
            DirectoryNode root = fs.getRoot();

            // 获取嵌入文件列表
            Entry entry = root.getEntry("MBD000644.pdf");

            // 获取嵌入文件的输入流
            DocumentInputStream inputStream = fs.createDocumentInputStream(entry);

            // 创建输出流
            FileOutputStream outputStream = new FileOutputStream("embedded.pdf");

            // 将嵌入文件内容复制到输出流
            byte[] buffer = new byte[1024];
            int length;
            while ((length = inputStream.read(buffer)) > 0) {
                outputStream.write(buffer, 0, length);
            }

            // 关闭输入流和输出流
            inputStream.close();
            outputStream.close();

            System.out.println("嵌入文件已成功提取到embedded.pdf");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这是一个简单的示例,演示了如何使用Apache POI打开和提取嵌入在Excel文件中的文件。请确保你已经替换了文件路径和文件名,以及正确的嵌入文件名称。

相关内容

热门资讯

玩家必看秘籍(智星德州菠萝)外... 玩家必看秘籍(智星德州菠萝)外挂透明挂辅助神器(软件)发牌规律(2023已更新)(哔哩哔哩);科技详...
玩家必用!边锋杭麻圈有挂,we... 玩家必用!边锋杭麻圈有挂,wepoker能开挂透视,详细有挂(有挂详情)-哔哩哔哩;小薇(透视辅助)...
关于!边锋老友二打一有挂(we... 关于!边锋老友二打一有挂(wepokE),太坑了确实是真的有挂(有挂透明)-哔哩哔哩;1.边锋老友二...
今日科普!雀神小程序秘籍(辅助... 今日科普!雀神小程序秘籍(辅助挂)太坑了原来真的有挂(有挂详情)-哔哩哔哩准备好在雀神小程序秘籍ia...
实测必看!边锋干瞪眼辅助器,德... 实测必看!边锋干瞪眼辅助器,德扑之星透视软件,详细有挂(有挂了解)-哔哩哔哩;支持2-10人实时对战...
6分钟了解(wepoke科技)... 6分钟了解(wepoke科技)外挂透明挂辅助机制(软件)透视辅助(2021已更新)(哔哩哔哩);we...
一分钟揭秘!微信小程序广东雀神... 一分钟揭秘!微信小程序广东雀神辅助器(透视)太坑了其实真的有挂(有挂总结)-哔哩哔哩;超受欢迎的微信...
八分钟了解!鄱阳翻精系统发牌机... 八分钟了解!鄱阳翻精系统发牌机制(wePOke),太坑了果真是真的有挂(有挂了解)-哔哩哔哩是一款可...
发现玩家!边锋老友麻将有挂,s... 发现玩家!边锋老友麻将有挂,sohoo德州有挂,详细有挂(有挂介绍)-哔哩哔哩科技教程也叫必备教程,...
玩家爆料(pokerworld... 玩家爆料(pokerworld软件)外挂透明挂辅助器(线上)发牌规律(2024已更新)(哔哩哔哩);...