操控excel,选择Python还是vba?
操控excel,选择Python还是vba?
-----
网友解答:
-----
“现在已经2022年了,放弃VBA这个语言吧孩子!!“
下面介绍几种常用的python操作Excel的库。
一、用pandas库操作Excel
pandas是python中做数据清洗、数据处理、操作excel文件最基础最常用的库。
官方文档:https://www.pypandas.cn/docs/getting_started/
没废话,直接讲代码!
首先,导入pandas库,并给pandas起个别名pd,后面调用直接用pd就行,少些几个字母,不是什么高级操作,完全就是因为。。。我懒!
import pandas as pd
然后,用pandas读取excel文件:
df = pd.read_excel('文件名.xlsx')
1.1 查询数据
查询前三行:
df.head(3)
查询最后三行:
df.tail(3)
二、用openpyxl库操作Excel
如果你不仅想用python处理Excel数据,还想改变Excel的样式:
如字体大小、字体颜色、单元格里增加下拉框、单元格设置颜色、填充颜色,甚至在Excel里画图!
openpyxl是个不错的选择!
给excel增加下拉框的demo代码:
wb = Workbook() # 初始化workbook
ws = wb.active # 初始化sheet页
ws.title = "IMPORT_SHEET1" # 设置标题
# 定义下拉框(发票类型、未产生电费原因)
dv1 = DataValidation(type="list", formula1='"分割单+发票复印件,16%专票+普通发票,16%专票,普通发票"', allow_blank=True)
dv2 = DataValidation(type="list", formula1='"原因1,原因2,原因3,原因4,原因5"', allow_blank=True)
dv1.error = '输入值不存在于下拉框选项!' # 错误提示
dv2.error = '输入值不存在于下拉框选项!' # 错误提示
dv1.errorTitle = '非法输入提示' # 提示框标题
dv2.errorTitle = '非法输入提示' # 提示框标题
dv1.prompt = 'Please select from the list' # 提示语
dv2.prompt = 'Please select from the list' # 提示语
dv1.promptTitle = 'List Selection'
dv2.promptTitle = 'List Selection'
ws.add_data_validation(dv1) # 添加下拉框
ws.add_data_validation(dv2) # 添加下拉框
column_fapiao_type = ("S3:S100000") # 指定列范围
column_reason_type = ("X3:X100000") # 指定列范围
dv1.add(column_fapiao_type)
dv2.add(column_reason_type)
wb.save('test99.xlsx') # 保存文件
给excel插入可视化图形的demo代码:
wb = openpyxl.load_workbook('test.xlsx') # 打开excel文件
ws1 = wb.worksheets[0] # 选择第一个sheet页
# ws1.title = "折线图" # 给sheet页命名
max_row = ws1.max_row # 最大行数
max_col = ws1.max_column # 最大列数
# 开始画图
chart = LineChart() # 初始化一个折线图
chart.title = chart_title # 折线图标题
chart.style = 13 # 折线的style
chart.x_axis.title = '月份' # 折线图的x轴名称
chart.y_axis.title = '数量' # 折线图的y轴名称
x_values = Reference(ws1, min_row=2, max_row=max_row, min_col=1, max_col=1) # x轴数值范围
data_area = Reference(ws1, min_row=1, max_row=max_row, min_col=2, max_col=2) # 数值区域
chart.add_data(data_area, titles_from_data=True) # 给图形添加数据
chart.set_categories(x_values) # 设置x轴
ws1.add_chart(chart, "A10") # 把图形添加到sheet页指定单元格
print('折线图已添加')
wb.save('test2.xlsx') # 保存excel文件
三、用xlwt、xlrd库操作Excel
xlwt,用来写入excel文件。我猜它的full name是:excel writer
xlrd,用来读取excel文件。我猜它的full name是:excel reader
他们只能用于读写2003版本以前的excel文件,即文件后缀是xls的。
# 初始化excel文件
xls = xlwt.Workbook() # 初始化workbook
sheet = xls.add_sheet('商铺信息') # 添加sheet页
# 设置字体格式
Font0 = xlwt.Font()
Font0.name = "Times New Roman" # 字体名称
Font0.colour_index = 2
Font0.bold = True # 加粗
style0 = xlwt.XFStyle()
# 在指定单元格添加数据
sheet.write(0, 0, '商铺名称', style0)
sheet.write(0, 1, '商铺链接', style0)
sheet.write(0, 2, '商铺资质(保证金)', style0)
sheet.write(0, 3, '掌柜', style0)
sheet.write(0, 4, '掌柜联系方式', style0)
sheet.write(0, 5, '发货时间', style0)
# 保存文件
xls.save('test.xls')
四、其他python库
另外,除了以上三种常用python库,还有xlutils、xlwings等库,不再赘述。
码字累了,下次接着写。。
我是 @马哥python说,持续分享Python干货!
-----
网友解答:
-----
数据量大更建议用Python,vba一般都是将数据存放在内存中,当数据不拆分电脑配置又不高,就会显得比较卡,数据处理完毕后,不释放下内存电脑用起来也会比较卡,vba一般只会启动2个cpu核心进行数据计算,运算效率也比较低,现在微软已经停止对vba的更新,更建议学习Python,如果只是操作excel,这两个学习难度差别不大,但是Python发展空间会更好
还有一种更加便捷的方法,就是使用power bi的三大组件进行数据处理,使用power query进行数处理,powerpivot进行分析,power view进行数据可视化,优点就是学习周期短,数据可实现自动刷新,上手比较快,使用这个方法,效率可能会比excel快一些,但是速度仍然不及python,当然了为了长久可持续更建议学习Python,但是上手周期会比较长
-----
网友解答:
-----
其实两者皆可,15000行数据来说,根本不算多,前面几个回答都在推荐vba,这里我重点介绍一下python是如何处理excel的,涉及xlrd/xlwt、openpyxl和pandas,感兴趣的朋友可以尝试一下:
基础模块xlrd/xlwt
这是python比较基础的2个excel处理库,相信许多朋友都听说或使用过,xlrd专门用于读取excel数据,xlwt专门用于写入excel数据,常见的工作表、行列、单元格等基本操作,这2个库都可以轻松搞定,数据量比较多、内存不够的情况下,可以先读取一部分数据,处理完成后,再读取下一部分数据,这样电脑就不容易卡死,效率也能更高一些:
简单易用openpyxl
这也是一个比较常用的python excel处理库,和xlrd/xlwt一样,openpyxl也可以轻松进行excel读写,支持按行按列读取/删除数据、单元格合并/拆分、插入图表/图片、调用函数/公式等基本操作,只不过仅兼容xlsx/xlsm 2种格式,较早的xls读写会出错,数据量比较多的情况下,也可先读取一部分,处理一部分,循环递归,直到所有数据都处理完:
专业强大pandas
说起pandas,许多朋友应该非常熟悉,尤其是做数据分析和处理的,作为python一个强大、著名的数据分析库,pandas可以轻松处理日常各种数据格式,包括txt、csv、excel、json、mysql等,只需简单几行代码即可快速完成数据的导入和导出,同时内置的数据格式提供了非常方便的数据处理,数据量多的情况下,可以按块进行读取,每次读取固定大小的块,处理完成后,再读取下一个块,直到所有数据都处理完:
目前,就分享这3个python excel处理库吧,简单易用的就是xlrd/xlwt、openpyxl,专业强大,也比较高效的就是pandas,只不过都需要一定python基础才行,vba也行,但比较局限,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
-----
网友解答:
-----
毫无疑问,如果只是操控excel我肯定选VBA。VBA是excel的原生语言,便捷性和效率无疑是最高的。用python反而更复杂,根本没必要。至于说用VBA处理15000行数据就卡,我只能说你的VBA水平太次了!因为我用VBA处理一个一百多万行的表去匹配另一个一百多万行的表也只用了一根烟的时间!
-----
网友解答:
-----
VBA能操作Excel,Python也可以。
和VBA相比,Python的本领更大,能干的事更强,当然,学习和付出的成本相对也更多。而且Python是一门单独的编程语言,它面向的用户也不仅仅是Excel用户。
而VBA是Excel内置的功能,在Excel中操作和使用也更简单和方便。不需再安装第三方软件。而且,网上用VBA操作Excel的代码和资源更多,找到稍加修改就能使用。VBA的本领可能没Python强,但操作Excel却更专业。
那么,倒底应该学什么?
举个例:你只想开小车上班,只需C照就行了,但你会去花更多精力学A照来开小车吗?
------------------
推荐阅读:
房贷53万花30年还清,利息就要55万,利息比本金还多正常吗?你怎么看?