java - 从另一个包含太多工作表的 Excel 创建一个新的单工作表 Excel 文件

标签 java xml excel apache-poi

当我运行以下代码时,出现此错误。

org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException: The supplied data appears to be a raw XML file. Formats such as Office 2003 XML are not supported

    OPCPackage pkg = OPCPackage.open(filename);
    XSSFReader r = new XSSFReader( pkg );
    SharedStringsTable sst = r.getSharedStringsTable();
    XMLReader parser = fetchSheetParser(sst);

    InputStream sheet2 = r.getSheet("rId7");
    wb = new XSSFWorkbook(sheet2);

如果我写的话效果很好

   wb = new XSSFWorkbook(pkg);

已安装

   wb = new XSSFWorkbook(sheet2);

但它从我的旧 Excel 中创建了所有工作表。我不想要它。因为我的旧excel很大。

有没有一种方法可以从相对 ID 为“rId7”的旧 Excel 工作表中仅创建一个工作表 Excel 文件?

最佳答案

new XSSFWorkbook() 需要 .xlsx 文件作为输入。这是一个具有 .XLSX 结构的 zip 文件。如果您提供的只是原始 XML,它将无法工作。您可以尝试打开您想要的文件,然后删除您不想保留的工作表。

关于java - 从另一个包含太多工作表的 Excel 创建一个新的单工作表 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48208157/

相关文章:

java - java.lang.ArrayIndexOutOfBoundsException:MapReduce

java - MalformedByteSequenceException 1 字节 UTF-8 序列的无效字节 1

excel - ExportAsFixedFormat 有时会失败

java - 使用 apache poi 在 excel 文件中设置页面 View 模式

java - HiveMQ Client中如何获取客户端连接信息? (MQTT)

java - 使用委托(delegate)的线程安全

java - 如何为多个 JButton 创建单个 ActionListener

xml - 如何在使用 XmlSlurper 解析 xml 时读取带连字符的属性名称(例如 model_name)

java - 为什么 org.w3c.dom 解析我的 xml 是错误的?

python - 我可以使用什么 Python RegEx 来指示仅在 Excel 单元格末尾的模式