对Python操作Excel的几个常用库,横向比对
一、安装
7个模块均为非标准库,因此都需要在命令行中进行安装:
pip install xlrd pip install xlwt pip install xlutils pip install xlwings pip install XlsxWriter pip install openpyxl pip install pandas
主要使用以下库:
openpyxl
:用于读取和写入 Excel 文件。pandas
:用于数据处理和分析。xlwings
:用于将 Python 与 Excel 连接,实现双向通信,需要命令行安装插件 输出命令:xlwings addin install。
excel 2010及以上(xlsx)使用 openpyxl
excel 2007 (xls)使用xlrd
pandas也是依赖openpyxl和xlrd的
二、模块导入
从上图就可以了解到,一般情况下用xlwings 或者pandas加上openpyxl基本都可以完成excle的所有操作:
# 导入表格数据读取及处理模块 import pandas as pd # 导入数据计算模块 import numpy as np # 导入时间处理模块 from datetime import datetime # 导入读取和修改excel的模块 from openpyxl import load_workbook,Workbook # 导入表格样式处理模块 from openpyxl.styles import * # 比较字符串相似度的模块 import difflib
1)xlwings支持.xls读,支持.xlsx文件读写。
2)支持Excel操作。
3)支持VBA。
三、xlwings常用代码
xlwings在Linux下的使用方法与局限性,xlwings的更新文档中,我发现了linux通用的使用方式,不能操作和保存文档
xlwings会帮助你创建.xlsm
和.py
两个文件,在.py
文件里写python代码,在.xlsm
文件里点击执行,就完成了excel与python的交互。
安装插件后,在命令提示符输出 xlwings quickstart ProjectName 就可以创建两个文件,就是之前说的.xlsm
和.py
文件
我们打开.xlsm
文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。
按快捷键Alt + F11
,就能调出VBA编辑器。
读取Excel文件的操作
Excel程序用App来表示,多个Excel程序集合用Apps表示; App就是我们打开的一个Excel应用,在此实例下创建工作薄。因此我们要创建工作簿,就必须先创建App实例。一个App实例可以创建多个工作簿Book。 单个工作簿用Book表示,工作簿集合用Books表示; 单个工作表用Sheet表示,工作表集合用Sheets表示; 区域用Range表示,既可以是一个单元格,也可以是一片单元格区域。 读取需要先实例化一个App对象,执行以下语句: app = xw.App(visible=True, add_book=False); 实例化一个app并设置可见 app.display_alerts=False 设置不显示警告 wb = app.books.open('H://test.xlsx') 传入Excel文件路径打开文件; 获取第一个sheet表,执行语句:sht = wb.sheets[0] 获取sheet表中单元格数据的方式如下: print(sht.range('A1').value) 读取单个 print(sht.range((1, 1), (5, 5)).expand().value) # 批量读取 print(sht.range(1, 1).expand('right').value) # 按行读 print(sht.range(1, 1).expand('down').value) # 按列读
写文件操作:
最简单的写文件操作步骤: 使用xlwings.App()打开Excel 使用app.books.add()添加一个工作簿 使用book.sheets.add()添加一个工作表 使用sheet.range('A1').value="A"给指定的单元格赋值 使用book.save('文件路径.xlsx')保存文件; def writeExcel(): #使用with打开excel,可以不关心关闭的问题,参数标识操作可见 with xw.App(visible=True,add_book=False) as app: book = app.books.add() #创建一个工作簿 sheet = book.sheets.add() #创建sheet表 sheet.range('A1').value = '直接写入单元格数据' book.save('H://xlwings.xlsx') #保存文件 #writeExcel() def writeExcle2(): book = xw.Book() sheet = book.sheets[0] sheet.range('A1').value = '直接写' book.save('H://xlwings.xlsx') #保存文件 book.close() #writeExcle2()
xlwings的app激活;
def getApp(): '''''' app=xw.App() pid = app.pid # 就是这个App的PID app1=xw.App() pid1 = app1.pid print(pid,pid1) #wps没有这些 #apps = xw.apps #print(apps.count) #查看app数量 #keys = apps.keys() #print(keys) #查看app的pid值 #app.activate() #激活当前app
版权声明:本文为原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
关注微信公众号:"cq_xifan";