目录
简介
安装
1.pyautogui及pyperclip
2.xlrd
2.1 xlrd对xlsx的支持问题
2.2 xlrd在win10中报错
使用
1.导包及各包说明
1.1 pyautogui
1.2 pyperclip
1.3 xlrd
1.4 time.sleep
2.一个适合新手理解的示例
3.列表切片操作的示例
不足与展望
把Excel中的数据机械地搬运到网页,是很多小伙伴遇到的苦力活。熟悉Python的小伙伴知道Excel的自动化模块有xlrd、xlwings、pandas等,网页自动化模块主要是selenium的webdriver。不过很多时候,杀鸡焉用牛刀。
Excel的简单搬运工作,主要就是模仿人手进行点击和复制粘贴,xlrd、pyperclip及pyautogui构成的十几行的代码即可轻松应付大多数场景。
pip install pyautogui
安装pyautogui的时候,pyperclip也会被安装进来。
xlrd存在两个注意事项
ValueError: Your version of xlrd is 2.0.1. In xlrd >= 2.0, only the xls format is supported. Install openpyxl instead.
pip install xlrd==1.2.0
对此,我建议直接安装1.2.0版本,若如果小伙伴已安装高版本,先用以下命令卸载。
pip uninstall xlrd
AttributeError: 'ElementTree' object has no attribute 'getiterator'
对此,解决方法是在python目录下/Lib/site-packages/xlrd/xlsx.py中,把两处 getiterator()改为iter()。
import pyautogui as pag
import pyperclip as ppc
import xlrd
from time import sleep
pyautogui是python中模拟键鼠操作的模块,其主要功能包括:
"""
模拟鼠标移动,以下仅展示绝对位置的移动
"""
pag.MoveTo(x = 100, y = 100[, duration = .2]) # 0.2秒内移动到(100,100)
"""
模拟鼠标点击,以下仅展示部分,另有拖动等功能
"""
pag.Click() # 点击一次
pag.doubleClick() # 双击
pag.rightClick() # 单击鼠标右键
"""
模拟键入
"""
pag.keypress('enter') # 模拟敲击一次单一键
pag.hotkey('ctrl', 'v') # 模拟按一次组合键
python沟通剪切板。不过其使用可能不太符合常人逻辑。
"""
复制一个数据到ppc,用ctrl + v粘贴,一种输出方法
"""
i = 'something'
ppc.copy(i) # i的值来自内部
"""
用ctrl + c 复制,用ppc粘贴到一个值,一种输入方法
"""
ppc.paste(i) # 用剪切板的内容给i赋值,i的值来自外部
功能还比较多,主要用到几个。
"""
实例化
"""
_workbook = xlrd.open_workbook(filename)
_worksheet = _workbook.sheet_by_name('Sheet1')
"""
有效行列及单元格(适合新手逻辑)
"""
nrows = _worksheet.nrows # 有效行
ncols = _worksheet.ncols # 有效列
cells = _worksheet.cells(rowx, colx).value # 单元格的值
"""
行列返回的列表(适合切片)
"""
row_list = _workbook.row_values(rowx, start_col=0, end_col = None)
col_list = _workbook.col_values(colx, start_row=0, end_row = None)
只需要注意python中sleep(i)中i是浮点数float,对应单位是秒。
import pyautogui as pag
import pyperclip as ppc
import xlrd
from time import sleep
_workbook = xlrd.open_workbook(filename)
_worksheet = _workbook.sheet_by_name('Sheet1')
for i in range(_worksheet.nrows):
data = _worksheet.cells(i, 2).value # 读取单元格的值
ppc.copy(data) # 复制到剪切板
pag.MoveTo(x = x1, y = y1, duration = .2)
pag.Click()
sleep(.2)
pag.hotkey('ctrl', 'v') # 粘贴
sleep(.2)
pag.press('enter') # 回车
import pyautogui as pag
import pyperclip as ppc
import xlrd
from time import sleep
_workbook = xlrd.open_workbook(filename)
_worksheet = _workbook.sheet_by_name('Sheet1')
ref_col = _worksheet.col_values(colx) # 读某列的值
for i in ref_col[1 : ]:
ppc.copy(i)
pag.MoveTo(x = x1, y = y1[, duration = t])
pag.Click()
pag.hotkey('ctrl', 'v')
pag.press('enter')
1.依赖坐标,在网页自动化方面可能缺乏性能和稳定性。建议小伙伴学习selenium及元素定位。
2.xlrd只具有读的功能。其功能也可以为openpyxl、xlwings、pandas等代替。建议小伙伴每样都学。