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、安装Gitgo get github.com/360EntSecGroup-Skylar/excelize
创建Excel文档
package mainimport (    "fmt"    "github.com/360EntSecGroup-Skylar/excelize")func main() {    f := excelize.NewFile()    // 创建一个工作表    index := f.NewSheet("Sheet2")    // 设置单元格的值    f.SetCellValue("Sheet2", "A2", "Hello world.")    f.SetCellValue("Sheet1", "B2", 100)    // 设置工作簿的默认工作表    f.SetActiveSheet(index)    // 根据指定路径保存文件    if err := f.SaveAs("Book1.xlsx"); err != nil {        fmt.Println(err)    }}
读取Excel文档
package mainimport (    "fmt"    "github.com/360EntSecGroup-Skylar/excelize")func main() {    f, err := excelize.OpenFile("Book1.xlsx")    if err != nil {        fmt.Println(err)        return    }    // 获取工作表中指定单元格的值    cell, err := f.GetCellValue("Sheet1", "B2")    if err != nil {        fmt.Println(err)        return    }    fmt.Println(cell)    // 获取 Sheet1 上所有单元格    rows, err := f.GetRows("Sheet1")    for _, row := range rows {        for _, colCell := range row {            fmt.Print(colCell, "")        }        fmt.Println()    }}

缺点

Go语言本身的错误处理真的是太迷了,可以看到每次对象赋值都要声明err,然后判断err != nil;同时在数据结构上,Go语言在对二维表(行列)操作时,也会有一点绕

结论

Excelize可以说是国内最好的第三方Excel操作库,虽然上手会有一点难度,但是在功能的丰富性和较好的运行性能,还是值得一试的

Excelize中文文档链接


Python : Pandas

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析。 Pandas中有DataFrame和Series两个数据类型,就好像Excel的工作表和数据列(转置后也可以看作:数据行),这就和Excel天生契合

简单入门

安装
# 1、 使用conda安装conda install pandas#/2、或者使用pip安装pip install pandas
读取Excel文档
import numpy as npimport pandas as pddf = pd.read_excel(open('tmp.xlsx', 'rb'),              sheet_name='Sheet3')
输出Excel文档
import numpy as npimport pandas as pddf = pd.DataFrame([['a', 'b'], ['c', 'd']],                   index=['row 1', 'row 2'],                   columns=['col 1', 'col 2'])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近乎相当

简单入门

安装
pip install openpyxl
创建文档
from openpyxl import Workbookwb = Workbook()ws = wb.activews.title = "新的工作表01"ws.sheet_properties.tabColor = "1072BA"wb.save('demo.xlsx')
读取文档
from openpyxl import load_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原来的文件等

简单入门

安装
pip install xlwings
创建和读取Excel文档
import xlwings as xwwb = xw.Book()  wb = xw.Book('FileName.xlsx') #创建一个新的Excel文件wb = xw.Book(r'C:pathofile.xlsx')#读取一个已有的Excel文件sht = wb.sheets['Sheet1']sht.range('A1').value = 'Foo 1'#单元格赋值wb.save()

缺点

在功能上,如文档格式化等相较Excelize和Openpyxl来说,还是有不少功能没有实现

结论

xlwings更多的是可以作为xlwings的扩展,学习曲线和Openpyxl也比较相似

xlwings文档链接

其他

其他的还有C#的EPPlus/NPOI;Java的POI,easyExcel;JavaScript的exceljs等,也是不错的Excel操作库;但学习曲线更为陡峭,应用场景也更为复杂。如果有一天,厌倦了VBA,但是又不想使用Go和Python,也是可以去尝试一下的

aspose excel中文文档_除了VBA,还有哪些编程语言可以操作Excel文件?相关推荐

  1. python excel 打印文档_教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!...

    原标题:教你如何用Python轻轻松松操作Excel.Word.CSV,一文就够了,赶紧码住!!! 作者:奈何缘浅wyj Python 操作 Excel 常用工具 数据处理是 Python 的一大应用 ...

  2. pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项

    Pyppeteer中文文档_序言_安装_基本使用及注意事项 Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口 ...

  3. springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列

    源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 My ...

  4. springboot 中文文档_比Swagger还好用的自动生成接口文档工具

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  5. springboot 中文文档_还在用 Swagger生成接口文档?我推荐你试试它

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  6. keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)

    版权声明:小博主水平有限,希望大家多多指导. 目录: [使用传统DNN] BG大龍:[DL项目实战02]图像分类--Keras框架+使用传统神经网络DNN​zhuanlan.zhihu.com [使用 ...

  7. flask中文文档_「Flask系列」 初识Flask

    引子 作者有多年的编程打杂经验,之前一直参与基于Java的各种项目以及产品规划与设计,后因自己创业维持一家小公司,有些项目与产品,想降低开发成本,故在公司内部推行基于Python Flask的后端开发 ...

  8. vuetify中文文档_我们为什么选择Vuetify作为前端框架

    尝试了很多不同的前端框架,最终我们选择Vuetify(https://vuetifyjs.com)前端框架. 从Bootstrap开始,到iview,Buefy,elementUI,我们都是不断的尝试 ...

  9. nest中文文档_如何将Nest Cam事件记录到Google文档电子表格

    nest中文文档 If you want to keep a permanent log of every motion event that your Nest Cam captures, you ...

最新文章

  1. 在线协作沟通,以目标分解成任务树基础的团队配合
  2. 播放视频android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法...
  3. 关于数据中台的深度思考与总结,20000 字不到一丢丢。。。
  4. resultset rs =pst.executequery();发生异常_07795.14.4HMaster无法成为Active异常分析
  5. 关于函数在C语言和Python语言中的表示
  6. opencv摄像头速度慢_c++ - 从OpenCV 3切换到OpenCV 4会导致网络摄像头以最高5帧的速度记录,而不是通常的30帧。 - SO中文参考 - www.soinside.com...
  7. 2020年中职学计算机有前途吗,2020年南昌中专计算机专业都学什么
  8. easyUI的combobox实现级联
  9. mysql怎么卸载干净?
  10. eclipse中,jdk7和jdk8并存开发的实现方式
  11. python太阳花画法_Python——教你画朵太阳花
  12. java 中counter什么意思_方便适用的计数器Counter
  13. unity 接入移动MM (3.1.10)
  14. Unity实现AR扫描图片
  15. WIN10系统盘安装提示MBR分区问题解决步骤
  16. 微博博主侮辱女性 街猫koryili
  17. easyui主界面布局easyui-layout用法一例
  18. 计算机二级考试题库vb知识点,国家计算机二级考试题库 VB上机试题第13套
  19. 高并发下数据库分库分表面试题整理
  20. YV12,I420,YUV420P的区别与格式转换

热门文章

  1. java hibernate 分页查询_4 Hibernate HQL查询,分页查询
  2. python分离文件名和路径_python 分离文件名和路径以及分离文件名和后缀的方法...
  3. React-引领未来的用户界面开发框架-读书笔记(四)
  4. 【ArcGIS遇上Python】python批量获取栅格数据四至(top,bottom,left,right)坐标代码
  5. ArcGIS实验教程——实验十七:缓冲区分析(Buffer Analysis)
  6. 关闭C#主窗体弹出是否关闭对话框
  7. Android之事件处理全面剖析
  8. 3%7python_Centos7 Python2 升级到Python3
  9. 惊呆了!这篇论文全文都是脏话,可编辑部居然对它评价极佳并发表了!
  10. “对不起,我们只招父母毕业于名牌院校的孩子”:最可怕的,是你还以为学历不重要...