从word apache.poi库中提取表

icomxhvb  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(439)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

5年前关门了。
改进这个问题
线程“main”org.apache.poi.poifs.filesystem.officexmlfileexception中出现异常:提供的数据似乎在Office2007+xml中。poi只支持org.apache.poi.poifs.storage.headerblockreader上的ole2 office文档。java:96)在org.apache.poi.poifs.filesystem.poifsfilesystem.(poifsfilesystem。java:84)在com.tabletest.main(tabletest。java:19)

  1. import org.apache.poi.hwpf.HWPFDocument;
  2. import org.apache.poi.hwpf.usermodel.Paragraph;
  3. import org.apache.poi.hwpf.usermodel.Range;
  4. import org.apache.poi.hwpf.usermodel.Table;
  5. import org.apache.poi.hwpf.usermodel.TableCell;
  6. import org.apache.poi.hwpf.usermodel.TableRow;
  7. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  8. public class TableTest {
  9. public static void main(String args[]) throws IOException
  10. {
  11. // String fileName="D:\\New folder\\Annual.doc";
  12. InputStream fis=new FileInputStream("D://New folder//Annual.docx");
  13. POIFSFileSystem fs=new POIFSFileSystem(fis);
  14. HWPFDocument doc=new HWPFDocument(fs);
  15. Range range=doc.getRange();
  16. for(int i=0;i<range.numParagraphs();i++)
  17. {
  18. Paragraph par=range.getParagraph(i);
  19. System.out.println(par.text());
  20. }
  21. Paragraph tablePar=range.getParagraph(0);
  22. if(tablePar.isInTable())
  23. {
  24. Table table=range.getTable(tablePar);
  25. for(int rowIdx=0;rowIdx<table.numRows();rowIdx++)
  26. {
  27. TableRow row=table.getRow(rowIdx);
  28. System.out.println("row "+(rowIdx+1)+",is table header: "+row.isTableHeader());
  29. for(int colIdx=0;colIdx<row.numCells();colIdx++)
  30. {
  31. TableCell cell=row.getCell(colIdx);
  32. System.out.println("column "+(colIdx+1)+",text= "+cell.getParagraph(0).text());
  33. }
  34. }
  35. }
  36. }
  37. }
iswrvxsc

iswrvxsc1#

hwpf用于基于ole2的.doc文件。对于.docx文件,您需要改用xwpf。
尝试 XWPFDocument ```
XWPFDocument doc=new XWPFDocument(fs);

相关问题