python 使用xlwings读取数据和写入数据

 

xlwings 库使用说明

--xlwings是Python操作Excel的强大扩展库

1 xlwings简介

关于xlwings,xlwings开源免费,能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。

xlwings还可以和matplotlib、numpy以及pandas无缝连接,支持读写numpy、pandas数据类型,将matplotlib可视化图表导入到excel中。

最重要的是xlwings可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。

1.1 官方网站:https://www.xlwings.org/

 

1.2 官方文档:https://docs.xlwings.org/en/stable/

 

1.3 中文文档:https://www.kancloud.cn/gnefnuy/xlwings-docs/1127450

 

1.4 版本更新说明:https://docs.xlwings.org/en/stable/whatsnew.html#

 

2 xlwings实操基本操作

2.1 建立excel表连接

import xlwings as xw

wb = xw.Book("e:\example.xlsx") 

wb = xw.Book()  # 这将创建一个新的工作簿

wb = xw.Book('FileName.xlsx')  # 连接到当前工作目录中的现有文件

wb = xw.Book(r'C:\path\to\file.xlsx')  # 在Windows上:使用原始字符串来转义反斜杠

2.2 实例化工作表对象

sht = wb.sheets["sheet1"]

2.3 返回工作表绝对路径

wb.fullname

2.4 返回工作簿的名字

sht.name

2.5 在单元格中写入数据

sht.range('A1').value = "xlwings"

2.6 读取单元格内容

sht.range('A1').value

2.7 清除单元格内容和格式

sht.range('A1').clear()

2.8 获取单元格的列标

sht.range('A1').column

2.9 获取单元格的行标

sht.range('A1').row

2.10 获取单元格的行高

sht.range('A1').row_height

2.11 获取单元格的列宽

sht.range('A1').column_width

2.12 列宽自适应

sht.range('A1').columns.autofit()

2.13 行高自适应

sht.range('A1').rows.autofit()

2.14 给单元格上背景色,传入RGB值

sht.range('A1').color = (34,139,34)

2.15 获取单元格颜色,RGB值

sht.range('A1').color

2.16 清除单元格颜色

sht.range('A1').color = None

2.17 输入公式,相应单元格会出现计算结果

sht.range('A1').formula='=SUM(B6:B7)'

2.18 获取单元格公式

sht.range('A1').formula_array

2.19 在单元格中写入批量数据,只需要指定其实单元格位置即可

sht.range('A2').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]

2.20 读取表中批量数据,使用expand()方法

sht.range('A2').expand().value

2.21 与正在打开的活动工作表互动

  • 其实你也可以不指定工作表的地址,直接与电脑里的活动表格进行交互

# 写入

xw.Range("E1").value = "xlwings"# 读取

xw.Range("E1").value

2.22 表格的清除

#清除表格的内容和格式

sheet.clear()

#清除表格的内容

sheet.clear_contents()

#删除表格

sheet.delete()

3 xlwings与numpy、pandas、matplotlib互动

3.1 支持写入numpy array数据类型

import numpy as np

np_data = np.array((1,2,3))

sht.range('F1').value = np_data

3.2 支持将pandas DataFrame数据类型写入excel

import pandas as pd

df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])

sht.range('A5').value = df

3.3 将数据读取,输出类型为DataFrame

sht.range('A5').options(pd.DataFrame,expand='table').value

3.4 将matplotlib图表写入到excel表格里

import matplotlib.pyplot as plt

fig = plt.figure()

plt.plot([1, 2, 3, 4, 5])

sht.pictures.add(fig, name='MyPlot', update=True)

 

4 Python API

https://www.kancloud.cn/gnefnuy/xlwings-docs/1127474

附1:类和对象的属性和方法查看方式

  1. dir(类名或者对象名)
  2. help(类名或者对象名)

第三方库的源码查看方法

1.库名.__file__

 

附2:安装(Anaconda里已经嵌入无需手动安装,直接使用Spyder编程即可)

安装xlwings的最简单方法是通过pip:

pip install xlwings

或者 conda:

conda install xlwings

请注意,官方的conda包版本可能会稍许落后。 但是,您可以使用conda-forge频道(参见:https://anaconda.org/conda-forge/xlwings) 获取最新的(但可能仍然是pip发布后一天左右):

conda install -c conda-forge xlwings

注意
当您使用Mac Excel 2016并使用conda安装xlwings(或使用Anaconda附带的版本)时,您需要运行$ xlwings runpython install一次以启用来自VBA的RunPython调用。 或者,您只需使用pip安装xlwings即可。

依赖

  • Windows: pywin32, comtypes

在Windows上,如果使用conda或pip安装xlwings,则会自动处理依赖项。

  • Mac: psutil, appscript

在Mac上,如果使用conda或pip安装xlwings,则会自动处理依赖项。 但是,使用pip,Xcode命令行工具需要可用。 需要Mac OS X 10.4(Tiger)或更高版本。 Mac的推荐Python发行版是Anaconda

可选的依赖项

  • NumPy
  • Pandas
  • Matplotlib
  • Pillow/PIL

这些包不是必需的,但强烈推荐,因为它们与xlwings非常相配。

加载项

有关如何安装xlwings加载项的信息,请参阅加载项

Python版本支持

xlwings在Python 2.7和3.3+上进行了测试

 

上一篇:python – Cassandra错误’NoneType’对象在导入csv时没有属性’datacenter’


下一篇:EXCEL-解决表格被锁定和分组的冲突