首页/文章/ 详情

Excel与Python的交互处理: Openpyxl (1)

1年前浏览720

1 引言

由于最近打算编写一个小的Excel程序, 于是在想使用哪一种语言与Excel进行交互. 过去, 主要使用了Excel里自带的VBA语言, 例如<BYSPT: 使用标准贯入试验估算土体的物理力学参数值>, 在那段时间里, 也使用VBA编写了桩设计, 排桩支护等工作使用的Excel程序. 近年来Python的呼声日益高涨, 许多用户要求微软的Excel嵌入Python语言. 不过, 在目前的Excel中还没有实现这一功能. 


后来, 在处理超过10万条的电影数据时, 使用了Pandas与Excel进行交互操作. 同时也安装过openpyxl, 这台机器上次安装的版本是2.5.3, 大约是在2018年左右. 如今两年多过去了, openpyxl已经发展到3.0.7, 于是首先把openpyxl更新到最新版本, 如下图所示. 

这个笔记没有逻辑地试验了openpyxl的一些功能, 将来有可能把它嵌入到FLAC3D, UDEC等软件中处理一些数据, 例如地震记录, SPT或CPT的测量数据.  


2 输入类

在本实验中, 仅输入了两个类: Workbook和Font, Workbook用来实例化对象wb, ws让这个对象激活, 如下所示.





from openpyxl import Workbookfrom openpyxl.styles import Fontwb = Workbook()ws = wb.active


3 直接赋值到cell

openpyxl可以直接把值赋值到cell中, 可以赋值字符串,也可以输入数值. 例如:



ws['A1'] = '公路桥涵结构设计'ws['B1'] = 24

此外, 也可以把当前时间赋值到cell中. 例如:



import datetimews['C1'] = datetime.datetime.now()


4 批量赋值多个cell

openpyxl使用append方法可以输入多个cell, 例如:

ws.append([1, 2, 3, 4])把这四个值分别赋值到A1,A2,A3,A4中. 

一个更万能的方法是使用数组赋值, 例如:









rows_count = (      (14, 27),      (22, 30),      (42, 92),      (51, 32),      (16, 60),      (63, 13)  )

在定义了这个数值后, 使用append把这些值赋值到(A1:B6)中:



for i in rows_count:      ws.append(i)


5 使用Excel公式

首先, 对一个cell的指定可以使用A1, B3这种格式外, 也可以直接使用行和列的数值来指定. 例如:


cell = ws.cell(row=7, column=3)

然后使用Excel的求和公式把上面的(A1:B6)相加,赋值到C7:


cell.value = "=SUM(A1:B6)" 


6 对字体控制

因为在开始输入了Font类, 所以可以对字体进行控制,包括字型和颜色:


cell.font = Font(bold=True,color = "FF0000")

这句代码把上面的求和值改成了红色粗体.


7 改变保存路径

在默认状态下, Excel文件保存到与py文件相同的目录下, 如果想保存到不同的目录, 可以自己设置路径:


filepath = "F:/tutorial/sample.xlsx"

wb.save(filepath)


8 加载存在的Excel文件

在下面的代码中, 通过load_workbook类加载一个已经存在的Excel文件:






from openpyxl import Workbookfrom openpyxl import load_workbookwb = Workbook() wb.save("demo.xlsx")wb = load_workbook("demo.xlsx")


来源:计算岩土力学
UMFLAC3D控制试验
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-11-19
最近编辑:1年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 147粉丝 1054文章 1776课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈