Python自动化办公2021-08-27

该文章详细介绍了使用Python进行自动化办公的各种方法,包括读写CSV文件、解析PDF、操作Word文档、处理Excel表格、创建PPT演示文稿以及播放音乐和修改背景图片。通过示例代码展示了如何实现这些功能,为提高办公效率提供了实用的技术支持。
摘要由CSDN通过智能技术生成

一、读写CSV文件

1、读CSV文件

import csv
def readCsv(path):
    infoList = []
    with open(path, "r") as f:
        allFileInfo = csv.reader(f)
        for row in allFileInfo:
            infoList.append(row)
    return infoList
path = r"E:\pythonProject\object\first\40、自动化办公\1、读写CSV文件\000001.csv"
info = readCsv(path)
print(info)

2、写CSV文件

import csv
def writeCsv(path, data):
    with open(path, "w") as f:
        writer = csv.writer(f)
        for rowData in data:
            writer.writerow(rowData)
path = r"E:\pythonProject\object\first\40、自动化办公\1、读写CSV文件\000002.csv"
data = [["1", "2", "3"], ["4", "5", "6"], ["7", "8", 9]]
writeCsv(path,data)

二、读取PDF文件

import sys
import importlib
importlib.reload(sys)

from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

def readPDF(path, toPath):
    #以二进制形式打开PDF文件
    with open(path, "rb") as f:
        #创建一个PDF文档分析器
        parser = PDFParser(f)
        #创建一个文档
        pdfFile = PDFDocument()
        #连接分析器与文档图像
        parser.set_document(pdfFile)
        pdfFile.set_parser(parser)

        #提供初始化密码
        pdfFile.initialize()
        #检测文档是否提供TXT转换
        if not pdfFile.is_extractable:
            raise  PDFTextExtractionNotAllowed
        else:
            #解析数据
            #数据管理器
            manager = PDFResourceManager()
            #创建一个PDF设备管理对象
            laparams = LAParams()
            device = PDFPageAggregator(manager, laparams=laparams)

            #解释器对象
            interpreter = PDFPageInterpreter(manager, device)
            #开始循环处理,每次处理一页
            for page in pdfFile.get_pages():
                interpreter.process_page(page)
                layout = device.get_result()
                for x in layout:
                    if (isinstance(x, LTTextBoxHorizontal)):
                        with open(toPath, "a+", encoding="utf-8") as f:
                            str = x.get_text()
                            print(str)
                            f.write(str + "\n")

path = r"E:\pythonProject\object\first\40、自动化办公\2、读取PDF文件\面向对象简介及思想.pdf"
toPath = r"E:\pythonProject\object\first\40、自动化办公\2、读取PDF文件\n.txt"
readPDF(path, toPath)

三、word自动化办公

1、读取doc和docx文件

import win32com
import win32com.client
def readWoldFile(path):
    #调用系统word功能,可以处理doc和docx文件
    mw = win32com.client.Dispatch("Word.Application")
    #调用Open方法打开文件
    doc = mw.Documents.Open(path)
    for paragraph in doc.Paragraphs:
        line = paragraph.Range.Text
        print(line)
    #关闭文件
    doc.Close()
    #退出word
    mw.Quit()

path = r"E:\pythonProject\object\first\Python.docx"
readWoldFile(path)

2、读取doc与docx文件并写入其他文件

import win32com
import win32com.client
def readWoldFileToAnotherFile(path, toPath):
    mw = win32com.client.Dispatch("Word.Application")
    doc = mw.Documents.Open(path)
    #将word的数据保存到另一个文件
    doc.SaveAs(toPath, 2)#2表示为TXT文件

    doc.Close()
    mw.Quit()
path = r"E:\pythonProject\object\first\40、自动化办公\3、Word自动化办公\stu.doc"
toPath = r"E:\pythonProject\object\first\40、自动化办公\3、Word自动化办公\a.txt"
readWoldFileToAnotherFile(path, toPath)

3、创建word文件

import win32com
import win32com.client
import os
def makeWordFile(path, name):
    word = win32com.client.Dispatch("Word.Application")
    #让文档可见
    word.Visible = True
    #创建文档
    doc = word.Documents.Add()
    #写内容
    #从头开始写
    r = doc.Range(0, 0)
    r.InsertAfter("亲爱的" + name + "\n")
    r.InsertAfter("      我想你\n")
    #存储文件
    doc.SaveAs(path)
    #关闭文件
    doc.Close()
    #关闭word
    word.Quit()
names = ["张三","李四","王五"]
for name in names:
    path = os.path.join(os.getcwd(), name)
    makeWordFile(path, name)

四、excel自动化办公

1、读取elxs文件

#elxs  els
from openpyxl.reader.excel import load_workbook
def readXlsxFile(path):
    #打开文件
    file = load_workbook(filename=path)
    #所有表格名称
    # print(file.get_sheet_names())
    sheets = file.get_sheet_names()
    #拿出一个表格
    sheet = file.get_sheet_by_name(sheets[0])
    #最大行数
    # print(sheet.max_row)
    #最大列数
    # print(sheet.max_column)
    #表明
    # print(sheet.title)
    #读取数据
    for lineNum in range(1, sheet.max_row + 1):
        # print(lineNum)
        lineList = []
        for columnNum in range(1, sheet.max_column + 1):
            #拿数据
            value = sheet.cell(row=lineNum, column=columnNum).value
            if value != None:
                lineList.append(value)
        print(lineList)
#不能处理xlx文件
path = r"E:\pythonProject\object\first\40、自动化办公\4、Excel自动化办公\1.xlsx"
readXlsxFile(path)

2、返回整体xlsx文件

#elxs  els
from openpyxl.reader.excel import load_workbook
def readXlsxFile(path):
    dic = {}
    file = load_workbook(filename=path)
    sheets = file.get_sheet_names()
    for sheetName in sheets:
        sheet = file.get_sheet_by_name(sheetName)
        #一张表的所有数据
        sheetInfo = []
        for lineNum in range(1, sheet.max_row + 1):
            lineList = []
            for columnNum in range(1, sheet.max_column + 1):
                value = sheet.cell(row=lineNum, column=columnNum).value
                if value != None:
                    lineList.append(value)
            sheetInfo.append(lineList)
        #将一张表的数据存到字典
        dic[sheetName] = sheetInfo
    return dic
path = r"E:\pythonProject\object\first\40、自动化办公\4、Excel自动化办公\1.xlsx"
dic = readXlsxFile(path)
print(dic)
print(len(dic))

3、返回xls与xlsx文件的内容

#有序字典
from collections import OrderedDict
#获取数据
from pyexcel_xls import get_data
def readXlsAndXlsxFile(path):
    dic = OrderedDict()
    #抓取数据
    xdata = get_data(path)
    for sheet in xdata:
        dic[sheet] = xdata[sheet]
    return dic
path = r"E:\pythonProject\object\first\40、自动化办公\4、Excel自动化办公\1.xlsx"
dic = readXlsAndXlsxFile(path)
print(dic)
print(len(dic))


4、写入xls文件

#有序字典
from collections import OrderedDict
#获取数据
from pyexcel_xls import save_data
def makeExcel(path, data):
    dic = OrderedDict()
    for sheetName, sheetValue in data.items():
        d = {}
        d[sheetName] = sheetValue
        dic.update(d)
    save_data(path, dic)
path = r"E:\pythonProject\object\first\40、自动化办公\4、Excel自动化办公\b.xls"
makeExcel(path, {"表1":[[1,2,3],[4,5,6],[7,8,9]],"表2":[[11,22,33],[44,55,66],[77,88,99]]})

五、ppt自动化办公

写ppt

import win32com
import win32com.client
import os
def makePPT(path):
    ppt = win32com.client.Dispatch("PowerPoint.Application")
    ppt.Visible = True
    #增加一个文件
    pptFile = ppt.Presentations.Add()
    #创建页
    page1 = pptFile.Slides.Add(1,1)
    t1 = page1.Shapes[0].TextFrame.TextRange
    t1.Text = "fanfan"
    t2 = page1.Shapes[1].TextFrame.TextRange
    t2.Text = "fanfan is a good man"

    page2 = pptFile.Slides.Add(2, 2)#第一个参数为页数从一开始、参数2为类型
    t3 = page2.Shapes[0].TextFrame.TextRange
    t3.Text = "凯哥"
    t4 = page2.Shapes[1].TextFrame.TextRange
    t4.Text = """kaige is a good man
    kaige is a nice man
    kaige is a cool man"""
    for i in range(3, 6):
        page = pptFile.Slides.Add(2, 2)
        t3 = page.Shapes[0].TextFrame.TextRange
        t3.Text = "凯哥"
        t4 = page.Shapes[1].TextFrame.TextRange
        t4.Text = """kaige is a good man\nkaige is a nice man\nkaige is a cool man"""

    # PPT中基本元素包括:
    # slide(幻灯片):一个PPT由一系列slide构成。
    # slide_master(幻灯片母版):母版可定义主题样式基准。
    # slide_layouts(模版):创建幻灯片时可选择的模版。
    # shape(形状):包含一切可视元素,通过slide.shapes可访问slide内元素。
    # placeholder(占位符):在模板中占据位置,如图片、文字等。
    # paragraph(段落):文本段,可以直接设置整段文本样式。
    # text(文本):段落内的文本,通过paragraph.add_run()生成。


    #保存
    pptFile.SaveAs(path)
    pptFile.Close()
    ppt.Quit()
path = r"E:\pythonProject\object\first\40、自动化办公\5、PPT自动化办公\fanfan.ppt"
makePPT(path)

#注意若碰到AttributeError: ppt.Application.Quit是安装的的office文档与Python的win32com.client不兼容

六、播放音乐

import time
import pygame
#音乐路径
filePath= r"E:\pythonProject\object\first\40、自动化办公\6、播放音乐\赵英俊 - 送你一朵小红花.mp3"
#初始化
pygame.mixer.init()
#加载音乐
track = pygame.mixer.music.load(filePath)
#播放音乐
pygame.mixer.music.play()
#
time.sleep(20)
#暂停
# pygame.mixer.music.pause()
#停止
pygame.mixer.music.stop()

七、修改背景图片

#win键+R ---》regedit---》 HKEY_CURRENT_USER---》HKEY_CURRENT_USER\Control Panel--》
# HKEY_CURRENT_USER\Control Panel\Desktop--》
import win32api
import win32con
import win32gui
def setWallPaper(path):
    #打开注册表
    reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
    #2 拉伸   0居中, 6 适应 , 10填充
    win32api.RegSetValueEx(reg_key, "WallpaserStyle", 0, win32con.REG_SZ, "2")
    # win32api.RegSetValueEx()
    # win32api.RegSetValueEx(reg_key, "Wallpaper")
    # SPIF_SENDWININICHANGE立即生效
    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, path, win32con.SPIF_SENDWININICHANGE)

setWallPaper(r"D:\壁纸\SogouWP\Local\WallPaper\1.jpg")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值