python将word表格转写入excel

发布时间:2020年02月14日 阅读:251 次

1 首先将doc文档格式转换成docx

2 然后安装两个包 用到 python-docx 和 pandas 分别处理 word 和 excel

3 注意python的版本 要用64位的

4 code:

from docx import Document
import pandas as pd

word = '1111.docx'
excel = '2222.xlsx'

doc = Document(word)  # word 文件
xls = pd.ExcelWriter(excel)  # 用来写入 excel

tables = doc.tables  # word 中所有 tables
print(tables)
tb = tables[0]  # 第一个 table
print(dir(tb))
print(len(tb.rows), len(tb.columns))  # 行数、列数
mat = []  # 用 list 套 list 的方法装二维表格内容
for i, tb in enumerate(tables):

    for c in range(0, len(tb.columns)):
        row = []
        for r in range(0, len(tb.rows)):
            cell = tb.cell(r, c)
            txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
            print(txt)
            row.append(txt)
        mat.append(row)

   # 用 mat 创建 DataFrame
    df = pd.DataFrame(mat)
    # print(df)
    # DataFrame 写入 excel 中的某张 sheet
    # 并且不要首列 index 和首行的 header(默认会有,比如数字标号)
    df.to_excel(xls, sheet_name=f'{0}')
    #break
    #df.to_excel(xls, sheet_name=f'{i}', index=False, header=False)

xls.save()  # 保存
xls.close()  # 关闭

5 用的文件 http://axuhongbo.top/file/?dl=ae3feb8b27353295943371afc461cbd8

6 参考链接 https://blog.csdn.net/HackerTom/article/details/101790510

7 另外一种客户要求的格式

from docx import Document
import pandas as pd

word = '1111.docx'
excel = '2222.xlsx'

doc = Document(word)  # word 文件
xls = pd.ExcelWriter(excel)  # 用来写入 excel

tables = doc.tables  # word 中所有 tables
print(tables)
tb = tables[0]  # 第一个 table
print(dir(tb))
print(len(tb.rows), len(tb.columns))  # 行数、列数
mat = []  # 用 list 套 list 的方法装二维表格内容
for i, tb in enumerate(tables):

    for c in range(1, len(tb.columns)):
        row = []
        cell = tb.cell(0, 1)
        txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
        row.append(txt)
        id = c
        for r in range(0, len(tb.rows)):
            cell = tb.cell(r, 0)
            txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
            if txt == '知识点编号':
                id = r
                break
        print('id:'+str(id))
        for r in range(1, 5):
            if r < id:
                cell = tb.cell(r, c)
                txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
                print(txt)
                row.append(txt)
            else:
                txt = ' '
                print(txt)
                row.append(txt)
        for r in range(id, len(tb.rows)):
            cell = tb.cell(r, c)
            txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
            print(txt)
            row.append(txt)
        mat.append(row)

    print("")
    print("")
   # 用 mat 创建 DataFrame
    df = pd.DataFrame(mat)
    # print(df)
    # DataFrame 写入 excel 中的某张 sheet
    # 并且不要首列 index 和首行的 header(默认会有,比如数字标号)
    df.to_excel(xls, sheet_name=f'{0}', index=False, header=False)
    #break
    #df.to_excel(xls, sheet_name=f'{i}', index=False, header=False)

xls.save()  # 保存
xls.close()  # 关闭


Tag:
相关文章

发表评论: