Eks6666 发表于 2023-8-8 22:23

python-docx操作word文档

import os
import re
import os.path as osp
from PIL import Image
import shutil
from docx import Document
from docx.shared import Inches,Pt
import pandas as pd
path=os.getcwd()
reg1=re.compile(r'.*(.jpg)$')

#1、获取照片路径列表
def file_path():
        """
        获取当前工作路径下所有照片绝对路径,并存放在一个列表内
        """
        file_path=[]#照片文件路径列表
        for dirpath,dirname,filenames in os.walk(path):
                list_j= [osp.join(dirpath,x) for x in filenames if osp.isfile(osp.join(dirpath,x))                                                                                                       
                                                                                                                if reg1.findall(x)] #获取图片的文件名,并拼接完整路径
                for s in list_j:
                        if s:#非空
                                file_path.append(s)

        return file_path


#2、压缩照片
def yasuo():
        """
        压缩照片               
        #照片文件目录名与照片文件路径组成键值对字典,构造DataFrame结构
        """
        dic={}
        for i in range(len(file_path())):
                name,exc=osp.split(file_path())
                nam=osp.basename(name)
                dic=[osp.join(name,exc) for exc in os.listdir(name) if osp.isfile(osp.join(name,exc))
                                                                                                                               if reg1.findall(exc)]

        for key,item in dic.items():
                print(f"开始压缩:{key}文件夹内的照片..")
                for file in item:
                        im = Image.open(file)
                        (x,y) = im.size
                        x_s = 2000
                        y_s = int(y * x_s / x)
                        out = im.resize((x_s,y_s),Image.Resampling.LANCZOS)
                        out.save(file)#原路径保存

                        na,ex=osp.split(file)
                        print(f'{ex}-压缩完成')                       
                print()


#3、根据挂牌清单生成挂牌照片文件夹
def create_picture_dir():
        df=pd.read_excel(r"G:\桌面\22年14批预算\22年14批-挂牌清单.xlsx",header=1)
        ds=df[~df["光缆段落名(A端-B端)"].isna()]
        di=ds.copy()
        di["光缆段落名(A端-B端)"]=di["光缆段落名(A端-B端)"].str.replace("/","-")
        lst=di["光缆段落名(A端-B端)"].tolist()

        for i in range(len(lst)):
                pt=osp.join(path,str(i+1)+"."+lst)
                if not osp.exists(pt):
                        os.mkdir(pt)
                        print(f'{lst}文件夹已生成..')
        print()
       

#4、光缆挂牌报告文档
def baogao():
        dic = {}
        for i in range(len(file_path())):
          name, exc = osp.split(file_path())
          nam = osp.basename(name)
          dic = [osp.join(name, exc) for exc in os.listdir(name) if osp.isfile(osp.join(name, exc))
                      if reg1.findall(exc)]

        doc=Document()
        doc.add_heading("2022年第14批光缆成端处挂牌照片",level=0)
        for key,item in dic.items():
                doc.add_paragraph(key)
                for i in range(len(item)):
                        try:
                                doc.add_picture(item,width=Pt(300))
                        except:
                                pass

        doc.save("终端盒成端处挂牌照片.docx")



baogao()

roboto 发表于 2023-8-8 23:22

学到了学到了

xiaopeng128 发表于 2023-8-9 00:15

过来学习一下

hnwang 发表于 2023-8-9 07:33

感谢分享。。

wqf02 发表于 2023-8-9 08:55

学习一下

shikongliangze 发表于 2023-8-9 08:58

学习学习,提高自己,感谢分享

wfyngj 发表于 2023-8-9 08:58

每次看别爬的溜

gailium 发表于 2023-8-9 09:31

没办法操作doc文档吗

haoiss 发表于 2023-8-9 09:37

保留,备用,感谢

Eks6666 发表于 2023-8-9 09:37

gailium 发表于 2023-8-9 09:31
没办法操作doc文档吗

铁子,操作doc文档要用pywin32
可以先把doc转成docx文档
页: [1] 2
查看完整版本: python-docx操作word文档