读取word文档中标题和表格(支持2007版本及以上的版本office和WPS)

1.读取word文档中标题和表格(支持2007版本及以上的版本),将代码的docx改为doc则可读doc结尾的文档

代码如下:

package read;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.xwpf.usermodel.*;

/**
 * 读取word文档中标题和表格(支持2007版本及以上的版本),将代码的docx改为doc则可读doc结尾的文档
 *
 */
public class ExportDoc2 {
    public static void main(String[] args) {
        String filePath ="G:\\new\\行动简报.docx";          
        testWord(filePath);
    }
    /**
     * 读取文档中表格
     * @param filePath
     */
    public static void testWord(String filePath){
        try{
            FileInputStream in = new FileInputStream(filePath);//载入文档
            // 处理docx格式 即office2007以后版本
            if(filePath.toLowerCase().endsWith("docx")){
                //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后
                XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息

                //读取标题
                List paras = xwpf.getParagraphs();
                for (XWPFParagraph graph : paras) {
                    String text = graph.getParagraphText();
                    //System.out.println(text);
                    String style = graph.getStyle();

                    //System.out.println(style);
                    if ("1".equals(style)) {
                        System.out.println(text+"--["+style+"]");
                    }else if ("2".equals(style)) {
                        System.out.println(text+"--["+style+"]");
                    }else if ("3".equals(style)) {
                        System.out.println(text+"--["+style+"]");
                    }else{
                        continue;
                    }
                }


                Iterator it = xwpf.getTablesIterator();//得到word中的表格
                while(it.hasNext()){
                    XWPFTable table = it.next();
                    List rows = table.getRows();
                    //读取每一行数据
                    for (int i = 0; i < rows.size(); i++) {
                        XWPFTableRow  row = rows.get(i);
                        //读取每一列数据
                        List cells = row.getTableCells();
                        for (int j = 0; j < cells.size(); j++) {
                            XWPFTableCell cell = cells.get(j);
                            //输出当前的单元格的数据
                            System.out.print(cell.getText() + "\t");
                        }
                        System.out.println();
                    }
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }}

2.想让在控制台输出的内容放到Excel中可用如下的方法:

在idea中将控制台输出的内容打印到Excel中:(打印到其他文件中也都类似)

可以直接在idea中配置:Run/Debug Configurations----Application ----找到对应的类----Logs-----Save console to files(输出的位置及文件名).

 

你可能感兴趣的:(java,poi)