批量讀取word文檔里的表格信息並將其輸出為excel表格


1、讀取文件夾下的所有文件,並過濾出.doc文件(因為python依賴包docx只能打開.docx文件,需要先過濾出.doc文件將其轉為.docx)

import os

def list_files_doc(path):
    files_doc = []
    for i, j, k in os.walk(path):
        for file in k:
            suffix = file.split('.')
            if suffix[1] == 'doc':
                print(file)
                files_doc.append(os.path.join(path, file))

    print('doc格式的文件列表:{}'.format(files_doc))
    return files_doc


if __name__ == '__main__':
    list_files_doc('E:\\python_myfile\\read_excel')

 

2、將.doc文件轉為.docx文件

from win32com import client as wc  # 導入模塊

def doc2docx(doc_files):
    word = wc.Dispatch("Word.Application")  # 打開word應用程序
    for doc_file in doc_files:
        doc = word.Documents.Open(doc_file)  # 打開word文件
        doc.SaveAs("{}x".format(doc_file), 12)  # 另存為后綴為".docx"的文件,其中參數12指docx文件
        doc.Close()  # 關閉原來word文件
    word.Quit()
    print("doc文件轉docx完成")

if __name__ == '__main__':
    doc2docx(['E:\\python_myfile\\read_excel\\用戶1信息.doc',])

 

 

3、從.docx文件讀取表格信息

from docx import Document
import os

def get_data_from_docx_files(path):
    print(path)
    data = []
    for i, j, k in os.walk(path):
        for file in k:
            suffix = file.split('.')
            if suffix[1] == 'docx':
                document = Document(file)  # 讀入文件
                tables = document.tables  # 獲取文件中的表格集

                table = tables[0]
                name = table.cell(0, 1).text
                sex = table.cell(0, 3).text
                info = {"name": name, "sex": sex}
                print(info)
                data.append(info)
    return data

if __name__ == '__main__':
    get_data_from_docx_files('E:\\python_myfile\\read_excel')

 

4、將信息輸出excel表格

import xlwt

def output_excel(header, data, result_excel):
    # 讀取文本文件
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)  # 創建一個Workbook對象,這就相當於創建了一個Excel文件
    sheet = book.add_sheet('test', cell_overwrite_ok=True)  # # 其中的test是這張表的名字,cell_overwrite_ok,表示是否可以覆蓋單元格,其實是Worksheet實例化的一個參數,默認值是False

    # 寫入表頭
    i = 0
    for k in header:
        sheet.write(0, i, k)
        i = i + 1

    # 寫入內容
    row = 1
    for val in data:
        print(val)
        sheet.write(row, 0, val['name'])  # 第二行第一列
        sheet.write(row, 1, val['sex'])  # 第二行第二列
        row = row + 1

    book.save(result_excel)

if __name__ == '__main__':
    output_excel(['姓名', '性別'], [{'name':'Danny', 'sex': 'female'}, {'name':'Merry', 'sex': 'male'}], '結果.xls')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM