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自动化办公方案(待整理到readthedocs中) -> 正文阅读

[系统运维]一些很好的python自动化办公方案(待整理到readthedocs中)

1、批量转换.doc文件为.docx文件

# coding=utf-8
# 代码文件:chapter7/ch7.2.1.py
import os

from win32com import client as wc  # 导入模块


# 查找dir目录下ext后缀名的文件列表
# dir参数是文件所在目录,ext参数是文件后缀名

def findext(dir, ext):
    allfile = os.listdir(dir)

    # 返回过滤器对象
    files_filter = filter(lambda x: x.endswith(ext), allfile)
    # 从过滤器对象提取列表
    list2 = list(files_filter)
    return list2  # 返回过滤后条件文件名


if __name__ == '__main__':

    #  设置输入目录
    indir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter7\data\test\in'
    #  设置输出目录
    outdir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter7\data\test\out'

    wordapp = wc.Dispatch("Word.Application")  # 创建Word应用程序对象

    # 查找indir目录中所有.doc文件
    list2 = findext(indir, '.doc')

    for name in list2:
        infile = os.path.join(indir, name)  # 将目录和文件名连接起来
        name = name.replace('.doc', '.docx')
        outfile = os.path.join(outdir, name)
        document = wordapp.Documents.Open(infile)  # 打开Word文件
        document.SaveAs(outfile, FileFormat=12)

        print(outfile, "转换OK。")
        document.Close(0)  # 关闭Word 0表示不保存变更

    print("Game Over!")

2、采用模板批量生成证书文件

# coding=utf-8
# 代码文件:chapter7/ch7.2.2.py

from datetime import datetime

import xlwings as xw

# 从docxtpl库导入DocxTemplate对象
from docxtpl import DocxTemplate

''' # 读取Excel文件获得员工数据 '''


def readdata():
    app = xw.App(visible=False, add_book=False)
    f = r'data/员工信息.xlsx'
    print('打开文件:', f)
    wb = app.books.open(f)

    sheet1 = wb.sheets[0]

    # 选择姓名单元格区域
    rng = sheet1.range('B2').expand('down')

    names = rng.value
    wb.close()
    app.quit()

    print('关闭文件:', f)
    # 返回姓名列表
    return names


if __name__ == '__main__':

    '''获得员工姓名列表 '''
    emps = readdata()

    # 获得当前日期,设置日期格式为yyyy-mm-dd(4位年、2位月和2位日)
    date = datetime.now().strftime('%Y-%m-%d')
    #  设置输出目录
    outdir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter7\data\test\out'

    for emp in emps:
        tpl = DocxTemplate('data/证书模板.docx')

        context = {}  # 传递给模板的字典对象
        context['name'] = emp
        context['title'] = '关总经理'
        context['date'] = date

        tpl.render(context)  # 渲染模板生成docx文档

        file = ('{0}/证书-{1}.docx'.format(outdir, emp))
        tpl.save(file)  # 将渲染成文档对象保存为docx文件
        print('{0}证书生成完成。'.format(emp))

    print('Game Over!')

3、批量统计文件页数和字体数

# coding=utf-8
# 代码文件:chapter7/ch7.2.3.py

import os

from win32com.client import Dispatch


# 查找dir目录下ext后缀名的文件列表
# dir参数是文件所在目录,exts参数是指定文件后缀名列表

def findext(dir, exts):
    allfile = os.listdir(dir)
    # 返回过滤器对象
    files_filter = filter(lambda x: os.path.splitext(x)[1] in exts, allfile)
    # 从过滤器对象提取列表
    list2 = list(files_filter)
    return list2  # 返回过滤后条件文件名


if __name__ == '__main__':

    #  设置输入目录
    indir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter7\data\test\in'
    # 通过findext函数查找指定目录下的.doc和.docx文件
    list2 = findext(indir, ['.doc', '.docx'])

    # 打开Word文档
    wordapp = Dispatch('Word.Application')
    wordapp.Visible = False  # 设置文档不可见

    # 遍历文件列表
    for name in list2:
        infile = os.path.join(indir, name)  # 将目录和文件名连接起来
        document = wordapp.Documents.Open(infile)  # 打开word文件
        # 重新编排页面
        document.Repaginate()
        pagenum = document.ComputeStatistics(2)  # 返回文档页数
        wordnum = document.ComputeStatistics(6)  # 返回文档字符数
        # 2	页数
        # 1	行数
        # 3	字符数
        # 4	段落数
        # 6	亚洲语言字符数
        # 0 单词数

        print('文{0}文件:页数是:{1},字符数:{2}'.format(name, pagenum, wordnum))

        document.Close(0)    # 关闭Word文档 0表示不保存

    wordapp.Quit()           # 退出Word应用
    print("Game Over!")

4、批量转换Word文件为PDF文件

# coding=utf-8
# 代码文件:chapter7/ch7.2.4.py
import os

from win32com import client as wc  # 导入模块


# 查找dir目录下ext后缀名的文件列表
# dir参数是文件所在目录,exts参数是指定文件后缀名列表

def findext(dir, exts):
    allfile = os.listdir(dir)
    # 返回过滤器对象
    files_filter = filter(lambda x: os.path.splitext(x)[1] in exts, allfile)
    # 从过滤器对象提取列表
    list2 = list(files_filter)
    return list2  # 返回过滤后条件文件名


if __name__ == '__main__':

    #  设置输入目录
    indir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter7\data\test\in'
    #  设置输出目录
    outdir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter7\data\test\out'

    wordapp = wc.Dispatch("Word.Application")  # 创建Word应用程序对象

    # 查找indir目录中所有.doc文件
    # 通过findext函数查找指定目录下的.doc和.docx文件
    list2 = findext(indir, ['.doc', '.docx'])

    for name in list2:
        # 将目录和文件名连接起来
        infile = os.path.join(indir, name)
        # 将文件后缀名.docx替换为.pdf
        name = name.replace('.docx', '.pdf')
        # 将文件后缀名.docx替换替为pdf
        name = name.replace('.doc', '.pdf')
        outfile = os.path.join(outdir, name)
        document = wordapp.Documents.Open(infile)  # 打开Word文件
        document.SaveAs(outfile, FileFormat=17)

        print(outfile, "转换OK。")
        document.Close(0)  # 关闭Word文件
    wordapp.Quit()  # 退出Word应用

    print("Game Over!")

参考:《趣玩python:自动化办公真简单》p176

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:43:29  更:2022-05-12 16:43:51 
 
开发: 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/15 15:48:57-

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