excel 自带vba和python 吗?还有哪些编程语言可以操作Excel文件
Excel(Microsoft office)是现在最常用的办公软件,主要涉及电子表格制作、数据处理、报表输出展示以及更高端的还有金融建模等;我们知道,在需要批处理多个Excel工作表以及工作簿的时候,需要用到一个自动化的利器:VBA
VBA其实是Visual Basic嵌套在office软件中的一个子集;VBA的功能很强大;但同时由于更新较少也有一些不方便的地方;比如VBA的数组功能一直被诟病,比如缺少智能提示的编辑器等等;那么有没有其他的编程语言也可以操作Excel呢?
下面就让我们来盘点一下:
Go语言 : Excelize
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿
Excelize是国人编写的基于Go语言的Excel库,中文文档相对来说更为齐全,同时Go语言是编译型语言,编译后只有1个运行文件,可以方便的拷贝到其他电脑使用,同时不用安装额外的运行时,Go语言还有一个优势就是,速度真的非常快
简单入门
安装
//1、安装Go语言程序//2、安装Gitgogetgithub.com/360EntSecGroup-Skylar/excelize
创建Excel文档
packagemainimport("fmt""github.com/360EntSecGroup-Skylar/excelize")funcmain(){f:=excelize.NewFile()//创建一个工作表index:=f.NewSheet("Sheet2")//设置单元格的值f.SetCellValue("Sheet2","A2","Helloworld.")f.SetCellValue("Sheet1","B2",100)//设置工作簿的默认工作表f.SetActiveSheet(index)//根据指定路径保存文件iferr:=f.SaveAs("Book1.xlsx");err!=nil{fmt.Println(err)}}
读取Excel文档
packagemainimport("fmt""github.com/360EntSecGroup-Skylar/excelize")funcmain(){f,err:=excelize.OpenFile("Book1.xlsx")iferr!=nil{fmt.Println(err)return}//获取工作表中指定单元格的值cell,err:=f.GetCellValue("Sheet1","B2")iferr!=nil{fmt.Println(err)return}fmt.Println(cell)//获取Sheet1上所有单元格rows,err:=f.GetRows("Sheet1")for_,row:=rangerows{for_,colCell:=rangerow{fmt.Print(colCell,"\t")}fmt.Println()}}
缺点
Go语言本身的错误处理真的是太迷了,可以看到每次对象赋值都要声明err,然后判断err != nil;同时在数据结构上,Go语言在对二维表(行列)操作时,也会有一点绕
结论
Excelize可以说是国内最好的第三方Excel操作库,虽然上手会有一点难度,但是在功能的丰富性和较好的运行性能,还是值得一试的
Excelize中文文档链接
Python : Pandas
Pandas是一个强大的分析结构化数据的工具集;它的使用基础是numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析。 Pandas中有DataFrame和Series两个数据类型,就好像Excel的工作表和数据列(转置后也可以看作:数据行),这就和Excel天生契合
简单入门
安装
#1、使用conda安装condainstallpandas#/2、或者使用pip安装pipinstallpandas
读取Excel文档
importnumpyasnpimportpandasaspddf=pd.read_excel(open('tmp.xlsx','rb'),sheet_name='Sheet3')
输出Excel文档
importnumpyasnpimportpandasaspddf=pd.DataFrame([['a','b'],['c','d']],index=['row1','row2'],columns=['col1','col2'])df.to_excel("output.xlsx")
缺点
Pandas在数据处理上是非常方便的,但在文档外操作,如批量修改工作簿名称,就需要引入os库;同时如果已有Excel文档是带格式(颜色填充、字体设置、单元格合并等),写入Excel的时候就会破坏掉原来的格式
同时,Python作为脚本语言,如果到其他电脑运行,需要额外安装运行环境
结论
如果纯粹的处理大批量数据(十万级以上),pandas自带各类聚合函数,让你处理起来得心应手;同时Pandas可以结合matplotlib等第三方绘图库,可以方便的可视化数据 如果你的数据本身可以离开Excel,如数据是从数据库导入Excel,那么也可以直接使用Pandas导入数据库数据,然后在Pandas上进行分析处理;Pandas底层使用numpy,在矩阵运算中具有非常高的性能
Pandas文档链接
Python : Openpyxl
openpyxl是一个用于读取/写入Excel2007及以上版本(即xlsx格式)文件的Python库,不论是Excel内的特殊格式,还是单元格处理,都提供了相应的函数,与Excelize近乎相当
简单入门
安装
pipinstallopenpyxl
创建文档
fromopenpyxlimportWorkbookwb=Workbook()ws=wb.activews.title="新的工作表01"ws.sheet_properties.tabColor="1072BA"wb.save('demo.xlsx')
读取文档
fromopenpyxlimportload_workbookwb=load_workbook('test.xlsx')print(wb.sheetnames)
缺点
Openpyxl不像pandas那样,底层使用numpy,所以在运行速度上,其实要比Excelize和pandas要慢(但是还是要比VBA要快一点);同时也是因为Python作为脚本语言,如果要放到其他电脑运行,需要安装相应的运行环境
结论
相对来说,Openpyxl与VBA的应用场景重合度会更高一点,处理的思路都是比较相近的;Python在语法上,比VBA要丰富和方便的多,如果需要切换,学习曲线会比较平滑
Openpyxl文档链接
Python : Xlwings
xlwings也是Python操作Excel的第三方库,很大程度上就是补全Pandas的缺点,可以在方便的处理文档本身,如修改工作表名称,将Pandas的数据处理结果调用到Excel原来的文件等
简单入门
安装
pipinstallxlwings
创建和读取Excel文档
importxlwingsasxwwb=xw.Book()wb=xw.Book('FileName.xlsx')#创建一个新的Excel文件wb=xw.Book(r'C:\path\to\file.xlsx')#读取一个已有的Excel文件sht=wb.sheets['Sheet1']sht.range('A1').value='Foo1'#单元格赋值wb.save()
缺点
在功能上,如文档格式化等相较Excelize和Openpyxl来说,还是有不少功能没有实现
结论
xlwings更多的是可以作为xlwings的扩展,学习曲线和Openpyxl也比较相似
xlwings文档链接
其他
其他的还有C#的EPPlus/NPOI;Java的POI,easyExcel;JavaScript的exceljs等,也是不错的Excel操作库;但学习曲线更为陡峭,应用场景也更为复杂。如果有一天,厌倦了VBA,但是又不想使用Go和Python,也是可以去尝试一下的
- 04-16唐艺昕结婚照证件照官宣 唐艺昕婚后首晒恩爱蜜月照
- 11-18大一挂科有几次补考:大一考试挂科了怎么办
- 12-04360手机智能语音机器人,360手机AI语音助手亮相360手机新品或首次适配
- 02-24百合放飞自由:不好百合要占领全世界了
- 12-28记一次JavaWeb网站技术架构总结:记一次JavaWeb网站技术架构总结
- 04-14排卵期怀孕的几率是不是比较大:排卵期同房记住这3个小细节
- 12-04金庸武当实力排行:金庸武侠实力最强的十大门派
- 02-11天龙八部新人玩哪个角色好?天龙八部有钱人游戏怎么玩
- 09-19被猫抓了发病的前兆:被猫抓出来的病你知道吗
- 02-05什么时候开始有打工这个词?出外,34
- 01-26excel常见的函数公式,Excel常用公式函数大全
- 03-30理想one全车升级过程:理想L喜提更新,再刺痛
- 01-20手机与电脑之间高速互传大文件:手机和电脑互传文件太慢
- 04-17旅行必带的食物:携带哪些食物营养均衡又便捷
- 05-09杠铃练胸要领:杠铃练胸的黄金动作你值得拥有
- 12-09湖人战胜勇士队技术统计 湖人战胜勇士2米06前锋得分全队最高
热门
推荐
- 1大学老师评议总结精选267
- 2祝我生日快乐作文177
- 3【北师大版语文六上基础训练答案】北师大版小学语文第五册《葡萄沟》教案1252
- 4大起板古筝谱315
- 5食用阿胶的禁忌事项以及功效作用231
- 6采石场承包协议474
- 7继续教育培训实施方案223
- 8金融市场部具体工作职责说明356