IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 将doc转为docx,读取docx数据,存储为excel -> 正文阅读

[Python知识库]python 将doc转为docx,读取docx数据,存储为excel

需求:将doc文档的表格里的部分数据整理到excel。

步骤:

step1:将doc格式转为docx

step2:读取docx数据并去重

step3:将批量读取到的数据存储为excel

requirements:

pywin32=225

python-docx

pandas

工程目录:

import

# -*- coding: utf-8 -*-

import os
import re
import time

from win32com import client
from docx import Document
import pandas as pd

main

def main():
    data_list = []
    folder_path = r'C:\Users\LRL09\Desktop\python\source'
    for index, origin_file in get_origin_file(folder_path):
        target_file = origin_file.replace('.doc', '.docx').replace('source', 'temp')
        target_path = '\\'.join(target_file.split('\\')[:-1])
        if not os.path.exists(target_path):
            os.makedirs(target_path)
        print(origin_file)
        doc2docx(origin_file, target_file)
        data = get_data_from(target_file)
        data['序号'] = index
        data_list.append(data)
    df = pd.DataFrame(data_list, columns=columns)
    df.to_excel(f'{folder}.xlsx', index=False)

get_origin_file

def get_origin_file(folder_path):
    file_list = []
    for root, dirs, files in os.walk(folder_path):
        for name in files:
            if '~' in name:
                continue
            if name.endswith('.doc') or name.endswith('.docx'):
                origin_file = os.path.join(root, name)
                try:
                    index = re.findall(r'2021- *(\d+)', origin_file)[0]
                except IndexError:
                    index = re.findall(r'\\(\d+)', origin_file)[-1]
                file_list.append((index, origin_file))
    file_list = sorted(file_list, key=lambda _: int(_[0]))
    for (index, origin_file), i in zip(file_list, range(1, 1000)):
        assert index == str(i)
    return file_list

doc2docx

def doc2docx(origin_file, target_file):
    word = client.gencache.EnsureDispatch('kwps.application')
    doc = word.Documents.Open(origin_file)
    doc.SaveAs2(target_file, 12)
    doc.Close()
    word.Quit()
    time.sleep(1)

get_data_from

def get_data_from(docx):
    # 获取docx数据并去重,因为Document读取docx后会出现很多重复
    doc = Document(docx)
    tb = doc.tables[0]
    data_table = []
    for i, row in enumerate(tb.rows):
        data_row = []
        temp = ''
        for j, cell in enumerate(row.cells):
            if temp == cell.text:
                continue
            else:
                temp = cell.text
                data_row.append(temp)
        # print(data_row)
        data_table.append(data_row)

    # 获取目标数据
    leader_name = data_table[1][1]
    department = data_table[2][1]
    project_type = data_table[4][1]
    approve_money = data_table[6][1]
    actual_money = data_table[6][3]
    remained_money = data_table[6][5]
    advise = data_table[13][1]

    # 构造字典
    data = {
        'leader_name': leader_name,
        'department': department,
        'project_type': project_type,
        'approve_money': approve_money,
        'actual_money': actual_money,
        'remained_money': remained_money,
        'advise': advise,
    }
    return data

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:09:59  更:2022-02-03 01:12:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:53:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码