Selenim自动点击

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome() # 打开谷歌浏览器
url = 'https://www.baidu.com/'
driver.get(url) # 输入网址

# 输入搜索关键词并点击搜索按钮
v = driver.find_element(By.ID, 'kw') # 查找搜索输入框
v.send_keys('不想搬砖怎么办?') # 输入关键词
time.sleep(3) # 等待页面加载完成

btn = driver.find_element(By.ID, 'su') # 查找搜索按钮
btn.click() # 点击搜索按钮

time.sleep(60) # 等待搜索结果页面加载完成

driver.quit() # 关闭浏览器

Win组合快捷键

快捷键 作用
Win+E 打开我的电脑
Win+D 返回桌面
Win+L 锁定计算机
Win+R 开启运行对话框
Win+M 最小化所有窗口
Win+U 打开设置页面
Win+TAB 窗口切换
Win+Break 打开电脑配置窗口
Win+数字键 切换任务窗口
Win+方向键 应用分屏

提取指定符号后字符串

1
=IFERROR(TRIM(MID(SUBSTITUTE(B2,"|",REPT(" ",100)),1,100)),"")

REPT函数用来重复空格100次

SUBSTITUTE将字符替换为指定内容

MID函数用来提取字符串中间部分的字符

TRIM函数去除空格

IFERROR函数将错误转换空文本

视频剪辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from moviepy.editor import *

# 打开视频文件
video = VideoFileClip('dark.mp4')

# 剪辑视频
video2 = video.subclip(0,1)

# 添加文字、位置、显示时间
text = (TextClip("WPS",fontsize =20,color ="white",font ="黑体")
.set_position('center')
.set_duration(0.5))

# 在视频上加载文本
video_with_text = CompositeVideoClip([video2,text])

# 保存为新文件
video_with_text.write_videofile('new_1.mp4')

拆分工作薄

将工作薄中的Excel工作表拆分为单独的工作薄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import xlwings as xw
import os

def split_excel(file_path):
app = xw.App(visible=False, add_book=False)

workbook = app.books.open(file_path)
worksheet = workbook.sheets
for i in worksheet: # 遍历工作簿中所有工作表
new_workbook = app.books.add() # 新建工作簿
new_worksheet = new_workbook.sheets[0] # 选中新建工作簿中的第1张工作表
i.copy(before=new_worksheet) # 将原来工作簿中的当前工作表复制到新建工作簿的第1张工作表之前
new_workbook.sheets[1].delete() #删除空白工作表
new_workbook.save('拆分\{}.xlsx'.format(i.name)) # 保存新工作簿
print('{}.xlsx'.format(i.name) + "拆分完成")
new_workbook.close() # 关闭新工作薄
workbook.close() # 关闭旧工作薄

def find_excel():
path = os.getcwd()
files = os.listdir(path)
if not os.path.exists("拆分"): #检查如果没有“拆分”文件夹
os.mkdir("拆分") #创建“拆分”文件夹
excelfiles = [f for f in files if not f.startswith(("~$")) and f.endswith((".xlsx"))] #过滤当前所有xlsx文件
for file in excelfiles: #遍历所有xlsx文件
fullpath = os.path.join(path,file)
split_excel(fullpath) #对xlsx文件进行拆分

find_excel()

将工作薄转换为PDF

将EXCEL中的所有工作表转换为一个PDF文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import win32com.client,os

def excel_to_pdf(excel_path, pdf_path):
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = False
wb = excel.Workbooks.Open(excel_path)

wb.ExportAsFixedFormat(
Type=0,
Filename=pdf_path,
Quality=win32com.client.constants.xlQualityStandard,
IncludeDocProperties=True,
IgnorePrintAreas=False,
OpenAfterPublish=False
)

wb.Close(SaveChanges=False)
excel.Quit()

def excel_file():
path = os.getcwd()
files = os.listdir(path)
if not os.path.exists("pdf"):
os.mkdir("pdf")
excelfiles = [f for f in files if not f.startswith(("~$")) and f.endswith((".xlsx"))]
for file in excelfiles:
excel_path = os.path.join(path,file)
pdf_name = os.path.splitext(file)[0]
pdf_path = path + "\\" + "pdf" + "\\" + pdf_name + ".pdf"
excel_to_pdf(excel_path, pdf_path)
print(excel_path+"格式转换完成")

excel_file()

批量调整Excel表格格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import openpyxl
import os

def excel_col(file_name):
wb = openpyxl.load_workbook(file_name)
sheet = wb.active

for row in sheet.iter_rows():
for cell in row:
cell.font=openpyxl.styles.Font(name='宋体')
cell.font=openpyxl.styles.Font(name='Times New Roman',size=12)

sheet.column_dimensions['B'].width = 6
sheet.column_dimensions['C'].width = 18
sheet.column_dimensions['D'].width = 25

sheet['A1'].font=openpyxl.styles.Font(name='宋体',size=20,bold=True)
sheet['G1'].font=openpyxl.styles.Font(name='宋体',size=12,bold=True)
sheet['G2'].font=openpyxl.styles.Font(name='宋体',size=12,bold=True)

wb.save(file_name)

def excel_file():
path = os.getcwd()
files = os.listdir(path)
excelfiles = [f for f in files if not f.startswith(("~$")) and f.endswith((".xlsx"))]
for file in excelfiles:
fullpath = os.path.join(path,file)
excel_col(fullpath)
print(fullpath + "格式调整完成")

excel_file()

生成词云

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 读取Excel文件
data = pd.read_excel('index.xlsx')
df = pd.DataFrame(data)

# 从DataFrame中提取数据
text = df['Name']
text1 = ' '.join(df['Name'])
print(text)
print(text1)

# 创建词云对象
wordcloud = WordCloud(background_color='white').generate(text1)

# 展示词云
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

打印文件夹内所有Excel文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import os
import win32com.client as win32

def init_excel(print_file):
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(print_file)
ws = wb.Sheets('Sheet1')
ws.PrintOut()
wb.Close(False)
excel.Quit()

def excel_file():
path = os.getcwd()
files = os.listdir(path)
excelfiles = [f for f in files if not f.startswith(("~$")) and f.endswith((".xlsx"))]
for file in excelfiles:
fullpath = os.path.join(path,file)
print(fullpath)
init_excel(fullpath)

excel_file()

Office批量转PDF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
import os, win32com.client, gc

# Word
def word2Pdf(filePath, words):
# 如果没有文件则提示后直接退出
if(len(words)<1):
print ("\n【无 Word 文件】\n")
return
# 开始转换
print ("\n【开始 Word -> PDF 转换】")
try:
print ("打开 Word 进程...")
word = win32com.client.Dispatch("Word.Application")
word.Visible = 0
word.DisplayAlerts = False
doc = None
for i in range(len(words)):
print(i)
fileName = words[i] # 文件名称
fromFile = os.path.join(filePath, fileName) # 文件地址
toFileName = changeSufix2Pdf(fileName) # 生成的文件名称
toFile = toFileJoin(filePath,toFileName) # 生成的文件地址

print ("转换:"+fileName+"文件中...")
# 某文件出错不影响其他文件打印
try:
doc = word.Documents.Open(fromFile)
doc.SaveAs(toFile,17) # 生成的所有 PDF 都会在 PDF 文件夹中
print ("转换到:"+toFileName+"完成")
except Exception as e:
print(e)
# 关闭 Word 进程
print ("所有 Word 文件已打印完毕")
print ("结束 Word 进程...\n")
doc.Close()
doc = None
word.Quit()
word = None
except Exception as e:
print(e)
finally:
gc.collect()

# Excel
def excel2Pdf(filePath, excels):
# 如果没有文件则提示后直接退出
if(len(excels)<1):
print ("\n【无 Excel 文件】\n")
return
# 开始转换
print ("\n【开始 Excel -> PDF 转换】")
try:
print ("打开 Excel 进程中...")
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = 0
excel.DisplayAlerts = False
wb = None
ws = None
for i in range(len(excels)):
print(i)
fileName = excels[i] # 文件名称
fromFile = os.path.join(filePath, fileName) # 文件地址

print ("转换:"+fileName+"文件中...")
# 某文件出错不影响其他文件打印
try:
wb = excel.Workbooks.Open(fromFile)
for j in range(wb.Worksheets.Count): # 工作表数量,一个工作簿可能有多张工作表
toFileName = addWorksheetsOrder(fileName, j+1) # 生成的文件名称
toFile = toFileJoin(filePath,toFileName) # 生成的文件地址

ws = wb.Worksheets(j+1) # 若为[0]则打包后会提示越界
ws.ExportAsFixedFormat(0,toFile) # 每一张都需要打印
print ("转换至:"+toFileName+"文件完成")
except Exception as e:
print(e)
# 关闭 Excel 进程
print ("所有 Excel 文件已打印完毕")
print ("结束 Excel 进程中...\n")
ws = None
wb.Close()
wb = None
excel.Quit()
excel = None
except Exception as e:
print(e)
finally:
gc.collect()

# PPT
def ppt2Pdf(filePath, ppts):
# 如果没有文件则提示后直接退出
if(len(ppts)<1):
print ("\n【无 PPT 文件】\n")
return
# 开始转换
print ("\n【开始 PPT -> PDF 转换】")
try:
print ("打开 PowerPoint 进程中...")
powerpoint = win32com.client.Dispatch("PowerPoint.Application")
ppt = None
# 某文件出错不影响其他文件打印

for i in range(len(ppts)):
print(i)
fileName = ppts[i] # 文件名称
fromFile = os.path.join(filePath, fileName) # 文件地址
toFileName = changeSufix2Pdf(fileName) # 生成的文件名称
toFile = toFileJoin(filePath,toFileName) # 生成的文件地址

print ("转换:"+fileName+"文件中...")
try:
ppt = powerpoint.Presentations.Open(fromFile,WithWindow=False)
if ppt.Slides.Count>0:
ppt.SaveAs(toFile, 32) # 如果为空则会跳出提示框(暂时没有找到消除办法)
print ("转换至:"+toFileName+"文件完成")
else:
print("(错误,发生意外:此文件为空,跳过此文件)")
except Exception as e:
print(e)
# 关闭 PPT 进程
print ("所有 PPT 文件已打印完毕")
print ("结束 PowerPoint 进程中...\n")
ppt.Close()
ppt = None
powerpoint.Quit()
powerpoint = None
except Exception as e:
print(e)
finally:
gc.collect()

# 修改后缀名
def changeSufix2Pdf(file):
return file[:file.rfind('.')]+".pdf"
# 添加工作簿序号
def addWorksheetsOrder(file, i):
return file[:file.rfind('.')]+"_工作表"+str(i)+".pdf"
# 转换地址
def toFileJoin(filePath,file):
return os.path.join(filePath,'pdf',file[:file.rfind('.')]+".pdf")



# 开始程序
print ("====================程序开始====================")
print ("【程序功能】将目标路径下内所有的 ppt、excel、word 均生成一份对应的 PDF 文件,存在新生成的 pdf 文件夹中(需已经安装office,不包括子文件夹)")
print ("注意:若某 PPT 和 Excel 文件为空,则会出错跳过此文件。若转换 PPT 时间过长,请查看是否有报错窗口等待确认,暂时无法彻底解决 PPT 的窗口问题(为空错误已解决)。在关闭进程过程中,时间可能会较长,十秒左右,请耐心等待。")
filePath = input ("输入目标路径:(若为当前路径:"+os.getcwd()+",请直接回车)\n")

# 目标路径,若没有输入路径则为当前路径
if(filePath==""):
filePath = os.getcwd()

# 将目标文件夹所有文件归类,转换时只打开一个进程
words = []
ppts = []
excels = []

for fn in os.listdir(filePath):
if fn.endswith(('.doc', 'docx')):
words.append(fn)
if fn.endswith(('.ppt', 'pptx')):
ppts.append(fn)
if fn.endswith(('.xls', 'xlsx')):
excels.append(fn)

# 调用方法
print ("====================开始转换====================")

# 新建 pdf 文件夹,所有生成的 PDF 文件都放在里面
folder = filePath + '\\pdf\\'
if not os.path.exists(folder):
os.makedirs(folder)

word2Pdf(filePath,words)
excel2Pdf(filePath,excels)
ppt2Pdf(filePath,ppts)
print ("====================转换结束====================")
print ("\n====================程序结束====================")
os.system("pause")