美文网首页Python-资料
如何用Python win32com处理Excel数据?

如何用Python win32com处理Excel数据?

作者: 成鹏9 | 来源:发表于2017-07-03 15:51 被阅读1073次

    为什么要用Python处理数据?

    ①快。之前发送数据日报都是从系统中导出数据,然后填充到基础表格中,展示表格里面的公式自动计算出数据。用过Excel的小伙伴都了解,很多公式(或者数组公式)或者大的基础数据,都会造成Excel的卡顿或者死机,,利用Python一般不会出现这种情况。

    ②顺畅。发数据的流程中"导出数据"的过程已经用Python解决(利用requests)。现在需要把Python导出的数据,写进自己设定的Excel表中。然后后期用itchat自动把数据发送到特定的微信群中。

    为什么选择win32com

    优点:语言基本上与VBA一致,如果碰到不懂的地方,可以用宏的方式去查看VBA代码

    缺点:必须在windows操作系统上面使用,程序出问题报错基本上看不懂。

    我为什么要用这个?碰巧遇到

    如何安装win32com

    win32com下载地址:https://sourceforge.net/projects/pywin32/files/

    下载过来操作安装即可

    pywin安装界面

    win32com简单使用方法

    引用模块

    import win32com.client as win32     

    from PIL import ImageGrab    #用于获取复制的图片

    读取表格

    1、获得Excel

    excel = win32.Dispatch('Excel.Application')   #获取Excel

    2、获得工作薄

    wb = excel.Workbooks.open('D:\\article_data\\test.xlsx') 

    3、获得工作表

    ws = wb.Worksheets('Sheet1')

    4、结果输出

    结果展示

    填充数据

    c_column = [20,30,20,30,40,50,35,45]

    d_column = [15,31,22,15,16,40,34,89]

    ws.Range('C2').value = c_column[0]

    结果输出

    结果展示

    也可以可以用函数快速处理数据

    函数填充数据

    结果输出

    结果展示

    对完成率进行降序排序

    ws.Range('A2:D9').Sort(Key1= ws.Range('B2'),Order1 = 2,Orientation=1)

    结果展示

    结果展示

    保存为图片

    ws.Range('A1:D10').CopyPicture()

    ws.Paste(ws.Range('G1'))

    结果展示

    结果展示

    把图片保存到本地

    ws.Shapes('图片 1').copy()

    img = ImageGrab.grabclipboard()

    img.save('D:\\article_data\\图片1.png')

    结果展示

    结果展示

    关闭表格

    wb.close()

    所有代码展示

    操作代码

    相关文章

      网友评论

        本文标题:如何用Python win32com处理Excel数据?

        本文链接:https://www.haomeiwen.com/subject/vyxzcxtx.html