Python连接Excel

Python连接Excel

VBA说

2020-06-29

关注

ython操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等。

他们提供的功能归纳起来有两种:

一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是用来储存数据。

二、除了操作数据,还可以调整Excel文件的表格宽度、字体颜色等。另外需要提到的是用COM调用Excel的API操作Excel文档也是可行的,相当麻烦基本和VBA没有区别。

xlwings的特色

  • xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改

  • 可以和matplotlib以及pandas无缝连接

  • 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。

  • 开源免费,一直在更新

和xlrd等不同,xlwings设计的基础理念不是面向单个的Excel文档进行的,而是可以处理一个包含了多个Excel文档的“Excel项目”。通过建立其app等逻辑组分概念,可以让整个Excel项目可以更加有序方便地进行计算和互相通讯。xlwings中设计的各个模型的概念层级如下图所示:

其中App是作为一个逻辑的分组,一个Book可以认为对应一个Excel文档,Sheet对应一张工作表,Range对应具体表中的一片区域的内容。首先,下面是一个最为常见的,打开一个Excel文档并进行处理的简单过程:

import xlwings as xw

book = xw.Book('/path/to/test.xlsx')

# 此时界面上会弹出Excel窗口,如果test.xlsx文件不存在则会报错,如果test.xlsx已经被打开,直接返回这个文件对象

print book.name,book.fullname # 打印文件名和绝对路径

print book.app # 可以查看book所在哪个APP

print book.sheets # 又是一个类列表结构,存放各种Sheet对象

book.activate() # 如果Excel没有获得当前系统的焦点,调用这个方法可以回到Excel中去

book.close() # 关闭Excel文档,但只是关闭文件本身,不关闭excel程序。。若要关闭Excel程序则需要调用响应APP实例的kill方法。经过试验,先调用close会导致默认创建的app实例自动消失,从而无法调用kill,从而关不掉Excel

所以最好的办法不是调用这个close而是调用app.kill()。

sheet = book.sheets[0]

# 其他获取sheet对象的方法还有book.sheets['sheet_name']

常见代码合集:

1、打开已保存的Excel文档

# 导入xlwings模块,打开Excel程序,默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭

import xlwings as xw

app=xw.App(visible=True,add_book=False)

app.display_alerts=False

app.screen_updating=False

# 文件位置:filepath,打开test文档,然后保存,关闭,结束程序

filepath=r'g:\Python Scripts\test.xlsx'

wb=app.books.open(filepath)

wb.save()

wb.close()

app.quit()

2、新建Excel文档,命名为test.xlsx,并保存在D盘。

import xlwings as xw

app=xw.App(visible=True,add_book=False)

wb=app.books.add()

wb.save(r'd:\test.xlsx')

wb.close()

app.quit()

3、新建test.xlsx,在sheet1的第一个单元格输入 “人生” ,然后保存关闭,退出Excel程序。

import xlwings as xw

app=xw.App(visible=True,add_book=False)

wb=app.books.add()

# wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值

wb.sheets['sheet1'].range('A1').value='人生'

wb.save(r'd:\test.xlsx')

wb.close()

app.quit()

4、打开已保存的test.xlsx,在sheet2的第二个单元格输入“苦短”,然后保存关闭,退出Excel程序

import xlwings as xw

app=xw.App(visible=True,add_book=False)

wb=app.books.open(r'd:\test.xlsx')

# wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值

wb.sheets['sheet1'].range('A1').value='苦短'

wb.save()

wb.close()

app.quit()

掌握以上代码,已经完全可以把Excel当作一个txt文本进行数据储存了,也可以读取Excel文件的数据,进行计算后,并将结果保存在Excel中。

引用工作簿、工作表和单元格

5、引用工作簿,注意工作簿应该首先被打开

wb.=xw.books['工作簿的名字']

6、引用活动工作簿

wb=xw.books.active

7、引用工作簿中的sheet

sht=xw.books['工作簿的名字'].sheets['sheet的名字']

# 或者

wb=xw.books['工作簿的名字']

sht=wb.sheets[sheet的名字]

8、引用活动sheet

sht=xw.sheets.active

9、引用A1单元格

rng=xw.books['工作簿的名字'].sheets['sheet的名字']

# 或者

sht=xw.books['工作簿的名字'].sheets['sheet的名字']

rng=sht.range('A1')

10、引用活动sheet上的单元格

# 注意Range首字母大写

rng=xw.Range('A1')

其中需要注意的是单元格的完全引用路径是:

# 第一个Excel程序的第一个工作薄的第一张sheet的第一个单元格

xw.apps[0].books[0].sheets[0].range('A1')

迅速引用单元格的方式是

sht=xw.books['名字'].sheets['名字']

# A1单元格

rng=sht[’A1']

# A1:B5单元格

rng=sht['A1:B5']

# 在第i+1行,第j+1列的单元格

# B1单元格

rng=sht[0,1]

# A1:J10

rng=sht[:10,:10]

PS: 对于单元格也可以用表示行列的tuple进行引用

# A1单元格的引用

xw.Range(1,1)

#A1:C3单元格的引用

xw.Range((1,1),(3,3))

储存数据

11、储存单个值

# 注意".value“

sht.range('A1').value=1

储存列表

# 将列表[1,2,3]储存在A1:C1中

sht.range('A1').value=[1,2,3]

# 将列表[1,2,3]储存在A1:A3中

sht.range('A1').options(transpose=True).value=[1,2,3]

# 将2x2表格,即二维数组,储存在A1:B2中,如第一行1,2,第二行3,4

sht.range('A1').options(expand='table')=[[1,2],[3,4]]

读取数据

12、读取单个值

# 将A1的值,读取到a变量中

a=sht.range('A1').value

(0)

相关推荐

  • 运营学Python|Python&Excel联动(上)

    来源:简说Python 作者:老表 一.写在前面 目前这个系列具体安排还没想好((fang)搁(ge)置(zi)了好久),主要是围绕Python自动化办公展开,至少包括Python对Excel.Wor ...

  • 超全整理|Python 操作 Excel 库 xlwings 常用操作详解!

    人人都可以简单入门Python.爬虫.数据分析  简说Python推荐  文 | 陈熹.刘早起 来源:早起Python 在之前的文章中我们曾详细的讲解了如何使用openpyxl 操作Excel,其实在 ...

  • Python提取 “Excel文本框” 内容,这个需求头一次见,1000个表,10行代码!

    前天 本文介绍 说实话,这个需求头一次碰到,我相信对于大多数朋友来说,也是头一次碰到."提取excel文本框中的内容",对,你没有听错!我也不知道你碰到过没有,但是这确实是一位朋友 ...

  • python xlwings 复制工作表

    其实xlwings在早期并没有提供复制工作表的相应函数,要实现复制工作表功能,需要调用excel的vba里面的相应方法worksheet.Copy. 在xlwings0.22版本以后,xlwings开 ...

  • (5条消息) python

    xlwings简要操作说明 xlwings与pandas.numpy模块有较好的交互,语法类似VBA,支持python调用vba,excel中调用python函数,可对excel进行读写操作: 文档链 ...

  • Python 与 Excel 终于互通了 !

    重磅干货,第一时间送达 本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心报道,参与:思源.张倩 很多开发者说自从有了 Python/Pandas,Excel ...

  • Python对excel的基本操作

    目录 1. 前言 2. 实验环境 3. 基本操作 3.3.1 获取工作表 3.3.2 遍历工作表 3.3.3 获取单元格数据 3.3.4 遍历行 3.3.5 遍历列 指定行 指定行范围 方法iter_ ...

  • 可能是全网最完整的 Python 操作 Excel库总结!

    在之前的办公自动化系列文章中,我已经对Python操作Excel的几个常用库openpyxl.xlrd/xlwt.xlwings.xlsxwriter等进行了详细的讲解. 为了进一步带大家了解各个库的 ...

  • 别傻了!PQ都没学会,VBA都学不来,你能学好Python处理Excel?

          不知道为什么,最近老收到一些关于python的培训课软文或广告,有来自大号的推文: 也有来自朋友圈的广告投放:      觉得Hello World怼得很赞的,可以文末留个言! 无一例外, ...

  • Python处理Excel的案例汇总(文末有福利)

    知乎上有个提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的问题,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,把简单的 ...

  • python word excel ppt自动化办公教程

    模块导入 import openpyxl 读取Excel文件 打开Excel文件 workbook = openpyxl.load_workbook('test.xlsx') 输出表单名字 # 输出工 ...

  • python+requests+excel接口自动化数据驱动

    一.前言 1.环境准备: - python3.6 - requests - xlrd - openpyxl - HTMLTestRunner_api 2.目前实现的功能: - 封装requests请求 ...

  • 超全整理|Python 操作 Excel 库常用操作详解

    来源:早起Python 作者:陈熹.刘早起 大家好,我是早起. 在之前的文章中我们曾详细的讲解了如何使用openpyxl 操作Excel,其实在Python中还有其他可以直接操作 Excel 文件的库 ...