Python:Excel搬运工(自动复制粘贴)——一种解放双手的思路

目录

简介

安装

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构成的十几行的代码即可轻松应付大多数场景。

安装

1.pyautogui及pyperclip

pip install pyautogui

安装pyautogui的时候,pyperclip也会被安装进来。

2.xlrd

xlrd存在两个注意事项

        2.1 xlrd对xlsx的支持问题

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

        2.2 xlrd在win10中报错

AttributeError: 'ElementTree' object has no attribute 'getiterator'

对此,解决方法是在python目录下/Lib/site-packages/xlrd/xlsx.py中,把两处 getiterator()改为iter()。

使用

1.导包及各包说明

import pyautogui as pag
import pyperclip as ppc
import xlrd
from time import sleep

        1.1 pyautogui

                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')    # 模拟按一次组合键

        1.2 pyperclip

                python沟通剪切板。不过其使用可能不太符合常人逻辑。

"""
复制一个数据到ppc,用ctrl + v粘贴,一种输出方法
"""
i = 'something'
ppc.copy(i)    # i的值来自内部


"""
用ctrl + c 复制,用ppc粘贴到一个值,一种输入方法
"""
ppc.paste(i)    # 用剪切板的内容给i赋值,i的值来自外部

        1.3 xlrd

                功能还比较多,主要用到几个。

"""
实例化
"""
_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)

        1.4 time.sleep

                只需要注意python中sleep(i)中i是浮点数float,对应单位是秒。

2.一个适合新手理解的示例

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')    # 回车

3.列表切片操作的示例

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等代替。建议小伙伴每样都学。

你可能感兴趣的:(excel,selenium,python,windows)