Java を使用して Excel に変換する必要がある情報の表を含む大きな Word ドキュメント (10,000 行以上) があります。テーブルを抽出してExcelに保存するためにapache poiを使用しています。次のコードがあり、iMac の行のサブセットで機能します。ただし、ドキュメント全体でコードを実行すると、ヒープ スペースの例外が発生します。
public class WordExtractor {
public static void main(String[] args) {
try {
File inputFile = new File("table.docx");
POITextExtractor extractor = ExtractorFactory.createExtractor(inputFile);
String text = extractor.getText();
BufferedReader reader = new BufferedReader(new StringReader(text));
String line = null;
boolean breakRead = false;
int rowCount = 0;
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("sheet1");
while (!breakRead) {
line = reader.readLine();
if (line != null) {
Row row = sheet.createRow(rowCount);
StringTokenizer st = new StringTokenizer(line, "\t");
int cellnum = 0;
while (st.hasMoreTokens()) {
Cell cell = row.createCell(cellnum++);
String token = st.nextToken();
System.out.println(" = " + token);
cell.setCellValue(token);
}
} else {
breakRead = true;
}
rowCount++;
}
try {
FileOutputStream out =
new FileOutputStream(new File("new.xls"));
workbook.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}