首先,我觉得它不是很容易使用 Apache POI API,就像任何其他 java API 一样,因为我很困惑在修改 docx 内容的情况下需要的所有 jar 文件,我正在使用 poi-scratchpad-3.1-beta1 .jar 和 poi-3.2-FINAL-20081019.jar (HWPFDocument 类),但在某些论坛中,它指向其他一些 poi jar 文件,不同的名称以及不同的版本......(表示使用 XSSFDocument 类)。
我的要求是用一些文件内容替换一些文本。为此,我使用以下代码替换 microsoft 2007(docx 文件)的内容。我最终得到了错误的说法..
org.apache.poi.poifs.filesystem.OfficeXmlFileException:提供的数据似乎在 Office 2007+ XML 中。POI 仅支持 OLE2 Office 文档
import java.io.*;
import org.apache.poi.POIDocument;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class GenerateTicket {
public static void main(String[] args) {
final String FILE_PATH = "/home/mateen/Desktop/Ticket.docx";
try {
File file = new File(FILE_PATH);
FileInputStream fis = new FileInputStream(file);
POIFSFileSystem poifs = new POIFSFileSystem(fis);
HWPFDocument doc = new HWPFDocument(poifs);
Range range = doc.getRange();
CharacterRun run = range.insertAfter("Hello POI CORE/HWPF !!!");
run.setBold(true);
run.setItalic(true);
doc.write(new FileOutputStream("/home/mateen/Desktop/FromTicket.Docx"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
所以...
- 有没有人知道为什么需要两个单独的 jar 文件
- 我可以做些什么来使我的代码工作?