- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Apache Commons 在 Google App Engine 中上传一个 .docx 文件,如此链接中所述 File upload servlet .上传时,我还想使用 Apache POI 库提取文本。
如果我将其传递给 POI API:
InputStream stream = item.openStream();
我得到以下异常:
java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
public static String docx2text(InputStream is) throws Exception {
return ExtractorFactory.createExtractor(is).getText();
}
我正在上传有效的 .docx 文档。如果我传递一个 FileInputStream 对象,POI API 工作正常。
FileInputStream fs=new FileInputStream(new File("C:\\docs\\mydoc.docx"));
最佳答案
我不知道 POI 的内部实现,但我猜他们需要一个可搜索的流。 servlet(以及一般的网络)返回的流是不可搜索的。
尝试读取全部内容,然后将其包装在 ByteArrayInputStream
中:
byte[] bytes = getBytes(item.openStream());
InputStream stream = new ByteArrayInputStream(bytes);
public static byte[] getBytes(InputStream is) throws IOException {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int len;
byte[] data = new byte[100000];
while ((len = is.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, len);
}
buffer.flush();
return buffer.toByteArray();
}
关于java - 您的 InputStream 既不是 OLE2 流,也不是 OOXML 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246850/
上下文: 尝试使用 Apache POI 的 poi 和 poi-ooxml 4.0.0 版本 jar 打开 XLSX 文件 问题: 程序抛出错误,如下所示。当我使用 4.0.0 版本时,我发现此错误
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我收到了奇怪的 XLSX 文件 (OOXML)。以下是其工作表 (xl/worksheets/sheet1.xml) 的一些代码片段: 33
我正在调试 Word Office js 加载项。它需要做的一件事是在 Word 文档中创建一个隐藏部分。为此,我将一些信息传递给创建 OoXML 字符串的 JavaScript 函数。我让用户能够在
我在使用 MS 的 Open XML SDK 2.0 创建 XLSX 文档时遇到问题。 我的问题是我需要在 Excel 工作表中显示其中一些非法字符,但如果我只是将它们添加到工作表中,文档将不会加载。
在 OOXML 中,诸如粗体、斜体等格式可以(并且常常令人烦恼地)在多个元素之间分割,如下所示: This
我正在尝试从 .docx 翻译一些格式规范模板到 LaTeX, 并且正在努力使其准确应对学术挑战。 考虑以下 Office Open XML 片段:
我需要能够根据文件的内容而不是文件的扩展名来识别给定文件是 OOXML 文件。 OOXML 文件实际上是 zip 容器中的 XML 和文本文件的集合,这意味着我不能使用文件的魔数(Magic Numb
如何创建启用跟踪更改的 .docx?里面有人告诉我word/settings.xml我应该修改 w:proofState但是我发现 OOXML 在线文档中的所有信息都与语法和拼写检查有关,但与启用跟踪
ElementTree (Python 2.7) 看不到根元素的属性,例如标签 - 拿一本空字典。我想要“即时”获取用于处理标签的 namespace 。库 xml.dom.minidom 工作正常
系统说明 使用 OOXML 生成文档的绘图组件。 绘图组件由几个部分组成。所有部分都用 C++ 编写为 exe + dll,但 OOXML 文档的接口(interface)除外。后一个组件是在 C#/
我无法获取 header 的 OOXML。根据documentation getHeader”方法将返回 Body 类型。 Body 有一个获取 OOXML 的方法。但看起来它没有返回 OOXML。也
我正在尝试使用外部配置文件制作 jar 文件。在使用 poi-ooxml 库之前一切正常。之后我遇到了资源提供的问题。我使用下一个 pom.xml: 4.0.0 xxx y
我一直在尝试通过 office-js insertOoXML() 方法将 OOXML 插入到 word 文档的正文内容中。我什至尝试了最简单的实现(认为我在尝试替换 XML 本身中的 fieldCod
我下载了 OOXML SDK。我需要创建一个简单的 Excel 电子表格,其中包含 x 个工作表,每个工作表有 4 列和 y 行数据。这很简单,但我找不到任何地方如何创建工作表的示例。 最佳答案 根据
我有一个很大的 XML 文件(来自 Microsoft Word),其中包含表格、段落等。我试图获取两个元素之间的所有 XML。例如,我想获取这两者之间的所有 XML #StartHe
我一直在查看 excel 生成的一些 xml 文件,发现要定义单元格的内容,它会执行如下操作: 1 在别处引用 sharedString.xml 文件的地方。 所以我的问题是,是否可以将文本内容直
好吧,这有点奇怪。我已经从 apache-poi 3.9 版源代码 http://archive.apache.org/dist/poi/release/src/ 但是我找不到 poi-xml-sch
当我尝试使用 apache poi 3.17 读取 doc 文件的内容时,出现以下错误: java.lang.IllegalArgumentException: The document is rea
我正在学习使用 Selenium 和 Excel 进行数据驱动测试。我正在参加一门在线类(class),要求在 Maven 中添加 Apache poi 和 poi-ooxml 依赖项。 我正在努力理
我是一名优秀的程序员,十分优秀!