对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";