Python自动化办公笔记,提高工作效率

本文介绍了Python的安装选择,推荐使用窗口安装包。讲解了如何使用Python进行Excel读写,包括所需的库如xlrd、xlwt、xlutils和pymysql,并提供了读写Excel的代码示例。此外,还涉及Python操作Excel样式及数据库的方法,以及正则表达式的应用,如文件名处理和数据匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、软件

1.1 Python运行环境

官网下载,源安装不推荐,嵌入式安装不方便写大程序,窗口安装包也不大安装方便。

1.2 PyCharm

小功能没必要安装

1.3 Cmder

二、Excel自动化处理

需要的三方库:

  1. xlrd:安装方法,安装好python开发环境后输入命令“pip install xlrd”,用于读excel
  2. xlwt:安装方法,安装好python开发环境后输入命令“pip install xlwt”,用于写excel
  3. xlutils:安装方法,安装好python开发环境后输入命令“pip install xlutils”,用于修饰excel样式
  4. pymysql:安装方法,安装好python开发环境后输入命令“pip install pymysql”,用于操作MySQL数据库

注意:最新的xlrd/xlwt可能不支持xlsx文件,解决办法:①安装低版本xlrd,pip install xlrd==1.2.0 ②将文件后缀名改为xls,高版本的xlrd依然支持xls文件格式

2.1 Python读写Excel

#读Excel
import xlrd

#得到工作簿
xlsx = xlrd.open_workbook('d:/7月下旬入库表.xlsx')

#得到工作表1:通过工作表顺序得到表
table = xlsx.sheet_by_index(0)

#得到工作表2:通过工作表名得到
table = xlsx.sheet_by_name("表名")

#得到表格中数据1,直接使用单元格地址
text = table.cell_value(0,0)
#(0,0)是单元格地址,行列都是用数字表示,从0开始。比如(D6)单元格就是(5,3),先行后列。
#table.cell(0,0).value这个写法也行,属于方法1的变形

#得到表格中数据2,通过类似数据的方法取值
text = table.row(1)[2].value
#写Excel
import xlwt

#创建工作簿
new_workbook = xlwt.Workbook()

#创建工作表,表名可以不填
worksheet = new_workbook.add_sheet('表名')

#写入单元格
worksheet.write(0,0,'test')

#写后保存
new_workbook.save('d:/test.xls')

2.2 Python操作Excel表格样式

from xlutils.copy import copy
import xlrd
import xlwt

#使用xlrd打开文件,第2个参数表示带格式打开文件
tem_excel = xlrd.open_workbook("文件名", formatting_info = True)
tem_sheet = tem_excel.sheet_by_index(0)

#使用xlutils.copy复制源表
new_excel = copy(tem_excel)
new_sheet = new_excel.get_sheet(0)

#定义格式
style = xlwt.XFStyle()

font = xlwt.Font()
font.name = "微软雅黑"
font.bold = True #字体加粗
font.height = 360 #对应字号,这个值的计算方法=字号*20
style.font = font

#边框样式
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN #THIN是边框线,表示细线
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders

#对齐方式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER #水平中心对齐
alignment.vert = xlwt.Alignment.VERT_CENTER #垂直中心对齐
style.alignment = alignment

#带格式写入
new_sheet.write(行号, 列号, 内容, style)

new_excel.save("保存文件名")

2.3 Python自动生成统计Excel报表


2.4 Python操作数据库

#python操作MySQL数据库
import pymysql

#连接数据库
database = pymysql.connect("数据库地址IP","用户名","密码","数据库名",charset='utf8')

#初始化指针,使用指针查询数据库
cursor = database.cursor()

#增
#1.写出sql语句
sql = "insert into tableName() values ()"
#2.用指针操作数据库
cursor.execute(sql)
#3.对数据库数据变更后,必须commit,否则数据不变化
database.commit()
#4.数据库关闭
database.close()

#改
sql = "update tableName set ... where ..."
cursor.execute(sql)
database.commit()
database.close()

#查
sql = "select ... from tableName where ..."
cursor.execute(sql)
result = cursor.fetchall()
print(result)

#删
sql = "delete from tableName where ..."
cursor.execute(sql)
database.commit()
database.close()

2.5 Python操作MySQL数据库自动生成统计报表

2.6 用xlsxwriter,openpyxl 更灵活操作 Excel

xlwt最多只能操作256列数据,为了更长的数据长度,使用xlsxwriter

xlsxwriter 库不支持带格式的文件
openpyxl 库不稳定

import xlsxwriter as xw

workbook = xw.Workbook('路径包括文件名')
sheet0 = workbook.add_worksheet('工作表名')
for i in range(0,300)
	sheet0.write(0,i,i)
workbook.close()
import openpyxl

workbook = openpyxl.load_workbook("文件名")

sheet0 = workbook['Sheet1']

sheet0['B3'] = '5'
sheet0['B6'] 7

workbook.save('文件名')

2.7 把文件名快速整理到Excel中

#学习过程
import os
import xlwt

file_dir='d:/'

os.listdir(file_dir)

#列出所有文件名
new_workbook = xlwt.Workbook()
worksheet = new_workbook.add_sheet()
n = 0
for i in os.listdir(file_dir):
	worksheet.write(n, 0, i)
	n += 1
new_workbook.save('文件名')
#博主统计的两种方法
#第一种,用xlwt库,整理出的文件必须为xls格式,可以带格式显示
#第二种,用xlsxwriter库,整理出的文件可以是xlxs文件,但不可以带格式显示

#使用前需要先安装对应的库:在cmd下执行下列语句
#pip install xlwt==1.2.0
#pip install xlsxwriter
#pip install openpyxl
import os
import xlwt
import xlsxwriter as xw
import openpyxl

#修改路径即可列出不同路径下的文件名
soruceFile_dir = "C:/Users/Song/Desktop"
aimWorkbookName = "当前目录下所有文件名.xlsx"
aimWorksheetName = "文件名汇总"
aimFile_dir = "C:/Users/Song/Desktop"

#使用xlwt
#new_workbook = xlwt.Workbook()
#worksheet = new_workbook.add_sheet("fileName")
#n = 0
#for i in os.listdir(file_dir):
#    worksheet.write(n, 0, n+1)
#    worksheet.write(n, 1, i)
#    n += 1
#new_workbook.save("C:/Users/Song/Desktop/fileNameList.xls")

#使用xlsxwriter
new_workbook = xw.Workbook(aimFile_dir+"/"+aimWorkbookName)
worksheet = new_workbook.add_worksheet(aimWorksheetName)
cowIndex = 0
for i in os.listdir(soruceFile_dir):
    worksheet.write(cowIndex, 0, cowIndex+1)
    worksheet.write(cowIndex, 1, i)
    cowIndex += 1
new_workbook.close()


#使用openpyxl,怎样新建一个工作表?
#workbook = openpyxl.load_workbook(file_dir+"/fileNameList.xlsx")
#worksheet = workbook._add_sheet("sheet2")
#n = 1
#for i in os.listdir(file_dir):
#    worksheet["a"+str(n)] = n
#    worksheet["b"+str(n)] = i
#    n +=1
#workbook.save()

三、文件自动化处理

3.1 正则表达式

测试正则效果的好软件:Regester

'''
\b -> 代表单词开头或者结尾,不代表任何东西,只是标识位置,单词只能包括数字、字母、汉字等,不包括特殊符号
^ -> 代表字符串的开头
$ -> 代表字符串的结尾

\d -> 匹配一位数字
\d{数量} -> 匹配若干数量个数字
\d{数量1,数量2} -> 匹配一个数字个数在数量1~数量2之间的数字串
\d{数量1,} -> 匹配一个数字个数大于等于数量1的数字串

. -> 匹配除换行符以外的任意字符
* -> 代表前面的部分重复任意次,可能为0次
+ -> 代表前面的部分重复任意次,不能为0次
? -> 代表前面的部分0次或1次
\s -> 匹配任意是空白符,包括空格,制表符(Tab),换行符,中文全角空格等
\w -> 匹配字母或数字或下划线或汉字
() -> 分组 括号里是一个整体
| -> 或
[范围] -> 某个范围的字符[0-9][a-z][A-Z]
\W -> 匹配任意不是字母,数字,下划线,汉字的字符
\S -> 匹配任意不是空白符的字符
\D -> 匹配任意非数字的字符
\B -> 匹配不是单词开头或结束的位置
[^范围] -> 匹配除了范围以外的任意字符

(?=条件) -> 零宽断言(后匹配):在后面匹配条件,但这些内部不被选中
(?<=条件) -> 零宽断言(前匹配)
(?!条件) -> 零宽断言(后匹配)
(?<!条件) -> 零宽断言(前匹配)

识别单个汉字:[\u4e00-\u9fa5]
识别汉字串:[\u4e00-\u9fa5]+
'''

\d #匹配每一个数字,每个数字为单独的
\d{6} #匹配一个6个数字的串,如果有一个数字串超过6位,则截取前6位
\b\d{6}\d #匹配一个只有6个数字的串,如果有一个数字串超过6位,则不匹配
\b\d{6,10}\d #匹配一个有6~10个数字的串,如果有一个数字串小于6位或大于10次,则不匹配
\b\d{6,}\d #匹配一个数字个数大于等于6位的串

3.2 python使用正则表达式

'''
python使用正则表达式
'''
import re

#源文本
i = "02.阿郎恋曲.mp302.阿郎恋曲.mp3"

#指定正则表达式
pattern = re.compile("(?<=\d{2}\.)[\u4e00-\u9fa5]+\.\w{3}")

#调用正则表达式1
matching1 = pattern.search(i)
#调用正则表达式2
matching2 = pattern.findall(i)

print(matching1)
#输出结果:<re.Match object;span=(3,11),match="阿郎恋曲.mp3">
#只显示第一次匹配的内容,同时可以返回位置
print(matching2)
#输出结果:["阿郎恋曲.mp3", "阿郎恋曲.mp3"]
#可以显示每个匹配的内容,但无法显示位置

3.3 用python管理文件

'''
列出目录下所有文件
'''
import os

list_all = []

for root,dirs,files in os.walk("D:/file_test"):
	for name in files:
		file_path = os.path.join(root, name)
		#print(os.path.split(file_path))
		file_name = os.path.split(file_path)[-1]
		list_all.append(file_name)
print(list_all)

3.4 用python进行文件重命名

'''
用python进行文件重命名
'''
import re
import os

pattern = re.compile(r".+\.pptx")

for root, dirs, files in os.walk("D:/file_text"):
	for name in files:
		file_path = os.path.join(root, name)
		matching = pattern.search(file_path)
		
		if matching: #如果没匹配到,matching为none
			os.rename(file_path, os.path.split(file_path)[-2] + "/123.pptx")

3.5 用python批量复制和删除文件

'''
用python批量复制和删除文件
'''
import re
import os

pattern = re.compile(r".+\.docx")
for root, dirs, files in os.walk(""):
	for name in files:
		file_path = os.path.join(root, name)
		matching = pattern.search(file_path)
		
		if matching:
			#复制文件,需要下面这两天语句
			command_line = "copy %s d:\\file2" % file_path.replace("/", "\\")
			os.system(command_line)
			#删除文件,只需要下面一条语句
			os.remove(file_path)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值