zoukankan      html  css  js  c++  java
  • 第12天 | 12天搞定Python,让excel飞起来

    学了10多天Python基础知识了,是时候来点硬货了,看过《第1天 | 12天搞定Python,告诉你有什么用?》的老铁都知道,Python可用的领域挺多的。只是我长期待在企业,所以只能说说,它在企业中常用范围。

    在企业中,我,有时会用Python进行数据爬取和分析;有时会用来快速开发Django Web系统;有时会为了提供工作效率,我会用Python对excel、word、ppt或pdf相关操作,进行高级处理。

    有关Python在数据分析和Django Web方面的应用,我找专题介绍。在这,我先讲Python在办公领域的应用。

    12.1 excel操作

    上过班或没上过班的同学都应该知道,excel在日常或工作中的应用是很频繁的。在工作中,常用来记录考勤信息和制作报价单等;在生活中,用来安排学习计划和记录家庭开支等。

    正由于此,Python对Excel提供的支持,是大大大的,大到库有好多,大到程序员都不知选择哪一个才好了。别急,我把已经把Python操作excel的相关库,给你整理出来了。

     1. 库的比较

    xlrd库只支持只读,xlwt补充了只写,xlutils补充了修改,这就是传说中的打补丁开发模式,想想不就想用,加上xlwt、xlutils只支持.xls文件的操作,那就更加没趣了,淘汰。

    xlsxwriter只能支持写的操作,不用我多说了吧,直接淘汰。

    openpyxl倒可以对.xlsx进行读写操作,可惜不支持.xls文件,这样就无法满足对”老古董“文件的处理,淘汰。pandas倒是可以同时支持.xls和.xlsx的读写操作,可惜不支持修改功能,淘汰。

    经过一步一步的筛选,最后只剩下xlwings和win32com了。一开始,我以为win32com只能用在Windows 32系统上,经核查,发现其在Python对应的库名称是pypiwin32,而32也不是32位的意思,它也支持64位系统的。

    如果非要比较win32com和xlwings的话,那就是win32com的性能要比xlwings好一些,但差别不是特别大,win32com的文档比xlwings难懂一些。所以在不考虑超级大数据的情况,我们会选择xlwings。

    2. xlwings应用

    打开【终端】窗口,输入pip install xlwings下载开发包。在安装成功之后,就可以用它对excel进行操作了。

    (1) 创建excel文件

    创建工作簿,创建页,在单元格逐个写入数据,也可一次性写入多项数据。

    import xlwings as xw
    
    app = xw.App(visible=True, add_book=False)
    # 新建工作簿
    wb = app.books.add()
    # 页sheet1
    sht = wb.sheets["sheet1"]
    # 单元格内容
    sht.range("A1").value = "产品名称"
    sht.range("B1").value = "编号"
    sht.range("C1").value = "价格"
    sht.range("D1").value = "规格"
    sht.range("E1").value = "生产日期"
    sht.range("A2").value = "牛逼1号"
    sht.range("B2").value = "101010"
    sht.range("C2").value = "¥666.66"
    # 同时输入多个(D2~E2),行
    sht["D2:E2"].value = ["12*26", "2020-10-20"]
    # 按行输入
    sht["A3"].value = ["牛逼2号", "101011", "9.9", "66*32", "2020-10-20"]
    # 在当前目录下生成文件
    wb.save("报价单.xlsx")
    wb.close()
    app.quit()

    输出结果(报价单.xlsx)

    (2) 编辑excel数据

    修改单元格数据,删除指定单元格。获取行和列总数,提供删除行和列的方法,通过这些核心的API,你就可以对整个sheet进行操作了。

    import xlwings as xw
    
    app = xw.App(visible=True, add_book=False)
    app.screen_updating = False
    app.display_alerts = False
    # 打开工作簿
    wb = app.books.open("报价单.xlsx")
    # 页sheet1
    sht = wb.sheets["sheet1"]
    # 获取总行数和列数
    """rows = sht.used_range.last_cell.row
    cols = sht.used_range.last_cell.column"""
    # 修改E2单元格内容d
    sht["E2"].value = ["2020-10-19"]
    #  删除行
    sht["2:2"].delete()
    #  删除列
    sht["D:D"].delete()
    # 保存当前文件
    wb.save()
    wb.close()
    app.quit()

    输出结果(报价单.xlsx)

     (3) 读取excel数据

    可按单元格或按行进行读取数据。

    import xlwings as xw
    
    app = xw.App(visible=True, add_book=False)
    app.display_alerts = True
    app.screen_updating = True
    # 打开文件
    wb = app.books.open("报价单.xlsx")
    sht = wb.sheets["sheet1"]
    # 读取单个
    a = sht.range("A1").value
    print(a)
    # 读取多个并存入列表
    r = sht.range("A1:A2").value
    print(r)
    wb.save()
    wb.close()
    app.quit()

    输出结果

    产品名称
    ['产品名称', '牛逼2号']

    好了,有关Python在excel应用方面的内容,老陈讲完了,如果觉得对你有所帮助,希望老铁能转发点赞,让更多的人看到这篇文章。你的转发和点赞,就是对老陈继续创作和分享最大的鼓励。

  • 相关阅读:
    nginx 指令之 try_files
    java tomcat jvm优化
    使用phpexcel上传下载excel文件
    路由器数据统计SQL脚本
    微信公众平台开发(122) 获取微信会员卡用户姓名和手机号
    微信会员卡积分规则
    IP白名单
    关于公众平台接口不再支持HTTP方式调用的公告
    微信公众号特异功能列表
    微信小程序 TOP100 榜单
  • 原文地址:https://www.cnblogs.com/halfcode/p/13863460.html
Copyright © 2011-2022 走看看