まず第一に、他の Java API と同様に、Apache POI 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();
}
}
}
それで...
- なぜ2つの別々のjarファイルが必要なのかを知っている人はいますか?
- コードを機能させるために何ができますか?