poi5.2.2读取xls报错ole

poi5.2.2读取xls报错ole,第1张

poi5.2.2读取xls报错ole可以这么做:文档不是真实的Excel文件,是xml文件【不符合,我用wps和office新建的Excel文件xls和xlsx都报错】文档加密【不符合】经查看州腊源码,POI会判断文档类型,如果不是OLE2或OOXM类型族配就会抛出异常,升级poi-ooxml至最新版本5.2.3,最新版本对文档类型的判断有更新,册穗滑可以正确识别文件类型

不知道你是具体读取饥型Word里面的什么元素,下面以读取文字和图片为例吧,两个代码示例,你参考看看:

读取文本

import com.spire.doc.Document

import java.io.FileWriter

import java.io.IOException

public class ExtractText {

public static void main(String[] args) throws IOException {

//加载Word文瞎渣档

Document document = new Document()

document.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.docx")

//获取文档中的文本保存烂神猜为String

String text=document.getText()

//将String写入Txt文件

writeStringToTxt(text,"ExtractedText.txt")

}

public static void writeStringToTxt(String content, String txtFileName) throws IOException {

FileWriter fWriter= new FileWriter(txtFileName,true)

try {

fWriter.write(content)

}catch(IOException ex){

ex.printStackTrace()

}finally{

try{

fWriter.flush()

fWriter.close()

} catch (IOException ex) {

ex.printStackTrace()

}

}

}

}

2. 读取图片

import com.spire.doc.Document

import com.spire.doc.documents.DocumentObjectType

import com.spire.doc.fields.DocPicture

import com.spire.doc.interfaces.ICompositeObject

import com.spire.doc.interfaces.IDocumentObject

import javax.imageio.ImageIO

import java.awt.image.BufferedImage

import java.io.File

import java.io.IOException

import java.util.ArrayList

import java.util.LinkedList

import java.util.List

import java.util.Queue

public class ExtractImages {

public static void main(String[] args) throws IOException {

//加载Word文档

Document document = new Document()

document.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.docx")

//创建Queue对象

Queue nodes = new LinkedList()

nodes.add(document)

//创建List对象

List images = new ArrayList()

//遍历文档中的子对象

while (nodes.size() >0) {

ICompositeObject node = nodes.poll()

for (int i = 0i <node.getChildObjects().getCount()i++) {

IDocumentObject child = node.getChildObjects().get(i)

if (child instanceof ICompositeObject) {

nodes.add((ICompositeObject) child)

//获取图片并添加到List

if (child.getDocumentObjectType() == DocumentObjectType.Picture) {

DocPicture picture = (DocPicture) child

images.add(picture.getImage())

}

}

}

}

//将图片保存为PNG格式文件

for (int i = 0i <images.size()i++) {

File file = new File(String.format("output/图片-%d.png", i))

ImageIO.write(images.get(i), "PNG", file)

}

}

}

注意这里使用的jar包是spire.doc.jar,需要在java程序中先导入jar文件。

题主是否想询问“poi读取excel数据最大内族悔祥存失败是为什么”?内部文件损坏。poi是一套用户构建用户界面的渐进式框架,是自底向上逐层应用,在该应用读取excel数据过程中,显兆搏示最大内存失败的话,是因为应用文件包内部文件损坏,没有热补丁兼前配容导致的,出现这种情况应把poi文件包重新下载一遍即可。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12140477.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存