Python 利用pywin32批量將doc轉換成docx再讀取成一行存入excel


作者:xujing123

前言:老大讓我給個excel收集數據,又覺得不好看,作者寫了個正式的word文檔但是格式是doc,無法用docx庫讀取,

數據暫時拿不到暫時安排為三層文件,利用python的pywin32模塊 將doc批量轉換成docx,在轉換成xls表方便導入數據。

pywin32只能在windows下使用,處理文件拉垮

docx可以跨平台,批量轉換成excel導入數據庫

第一層是全部文件夾

第二層是各個公司存儲數據文件夾

第三層是數據文件import os # 用於獲取目標文件所在路徑

 

  

 

 

import os  # 用於獲取目標文件所在路徑
from win32com import client as wc  # 導入模塊
from docx import Document
import xlrd
from xlutils.copy import copy

def zhuanhuan():
    '''
    轉換docx格式
    :return:
    '''
    path = "d:\\Users\\Administrator\\Desktop\\新建文件夾\\"  # 待處理文件夾
    dest_path = "d:\\Users\\Administrator\\Desktop\\新建文件夾 (2)\\" #保存文件夾
    word = wc.Dispatch("Word.application")  # 打開word應用程序
    for file in os.listdir(path): #循環讀取這個文件夾下所有文件
        print("3")

        path = path = "d:\\Users\\Administrator\\Desktop\\新建文件夾\\"
        path += str(file + "\\")
        print("文件夾位置",path)
        for file in os.listdir(path):
            print("文件名",file)
            (file_path, temp_file_name) = os.path.split(file)
            (short_name, extension) = os.path.splitext(temp_file_name)
            doc = word.Documents.Open(path + file)
            doc.SaveAs(dest_path + short_name + ".docx", 12)  # 另存為后綴為".docx"的文件,其中參數12指doc文件
            doc.Close()
    word.Quit()


def read():
    dest_path = "d:\\Users\\Administrator\\Desktop\\新建文件夾 (2)\\" #保存文件夾
    for file in os.listdir(dest_path):
        list = []   # 存儲word單元格數據
        doc = Document( dest_path + file )
        allTables = doc.tables
        print(file)
        for table in allTables:     #我的文檔里有兩個word表格,第二個為空
            for i in range(len(atle.rows)):
                if i <4:
                    list.append(table.cell(i,1).text)
                    list.append(table.cell(i,3).text)
                else:
                    list.append(table.cell(i,1).text)
                if len(list) == 11:
                    write(list)
            break

def write(list):
    path = "d:\\Users\\Administrator\\Desktop\\招聘.xls"
    r_xls = xlrd.open_workbook(path)  # 打開Excel文件讀取數據
    r_sheet = r_xls.sheet_by_index(0)  # 通過索引順序獲取
    rows = r_sheet.nrows  # 獲取行數
    w_xls = copy(r_xls)
    sheet_write = w_xls.get_sheet(0)
    for i in range(0, len(list)):
        sheet_write.write(rows, i, list[i])

    w_xls.save( "d:\\Users\\Administrator\\Desktop\\招聘.xls")

    
    
zhuanhuan()
read()

 

 

 手有點生,本來是想用pandas來存excel的,xlrd存儲有點麻煩,下回開始復習pandas


文件參數可以參照 這篇文章


免責聲明!

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



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