aspose excel中文文档_除了VBA,还有哪些编程语言可以操作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、安装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

7c7c176459bec9a7fe1fb56f7885f782.png

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,也是可以去尝试一下的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于.NET5在IIS中部署的几个问题总结

本来我的系列教程已经慢慢剥离开IIS了,毕竟有了Docker容器以后,配合Nginx使用真的很不错。但是还是有很多同学使用IIS的,这个不可否认IIS的重要性。随着.NET的发布,很多小伙伴已经开始升级了,我也就陆陆续续收到了一些…

上海市二级c语言软件环境,上海市计算机二级C语言复习资料 word整理版.doc

上海市高等学校计算机等级考试二级(C程序设计)03年上海市高等学校计算机等级考试试卷二级 (C程序设计)(本试卷答卷时间为120分钟)试题一(28分,每小题4分)解答下列各小题,把正确的解答写在答卷纸的对应栏内。设有变量说明:int a5,b4,c3,r1,r2;…

数据结构——括号匹配问题

括号匹配 给定一个字符串,其中的字符只包含三种括号:花括号{ }、中括号[ ]、圆括号( ),即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正…

wordpress多站点主站调用分站最新文章_企业网站SEO最新的7个优化步骤!

如果你是一个企业主,你有建立企业官方网站的经验,在2-3年的运作中,我相信你至少修改了一个网站,甚至做了一个重大的SEO策略调整。当我们开始建立一个公司的时候,很多时候就是认为只要我们有一个公司的网站,…

c语言sizeof和strlen哪个大,C语言的sizeof和strlen区别与联系

sizeof指的是占有空间的大小&#xff0c;包括字符串结束的\0。strlen是计算字符串长度&#xff0c;以\0作为结束标志&#xff0c;并且\0不计入数值。#include #include using namespace std;void fun(char a[100]){cout << sizeof(a) << endl;// 参数里的数组也是按…

数据结构——进制转换(10—n)

进制转换&#xff08;10进制——n进制&#xff09; 所需知识&#xff1a;栈 #include<stdio.h> #include<bits/stdc.h> using namespace std; #include<malloc.h> #include<string>typedef int Status; #define OK 1 #define ERROR 0 #define TRUE 1…

Azure 静态 web 应用集成 Azure 函数 API

前几次我们演示了如何通过Azure静态web应用功能发布vue跟blazor的项目(使用 Azure静态web应用Github全自动部署VUE站点、使用Azure静态Web应用部署Blazor Webassembly应用)。但是一个真正的web应用&#xff0c;总是免不了需要后台api服务为前端提供数据或者处理数据的能力。同样…

c++ new一个结构体_C语言结构体,又一个纸老虎,纯干货讲解(附代码)

来源&#xff1a;网络&#xff0c;排版整理&#xff1a;晓宇微信公众号&#xff1a;芯片之家(ID&#xff1a;chiphome-dy)结构体的定义结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合&#xff0c;也叫结构。结构体和其他类型基础数据类型一样&#xff0c…

c语言next的用法,C语言strchr使用之Next查找和截断想要的字符串

#include #include #include #include #include #include #include #include static char pstring[] "Hello\n"; // 这里不能是char*int main(){char tmp ;char* pstr strchr(pstring,‘l‘);printf("pstr is %s %p\n",pstr,pstr);#if 0// 搜后面的pstr …

problem b: 十进制整数转二进制_二进制的科学计数法?白话谈谈计算机如何存储与理解小数:IEEE 754...

浮点数的计算机表示(IEEE 754)&#xff0c;由 UCB 数学教授 William Kahan 主要起草。后者也因其卓越贡献于1989年获得图灵奖。计算机组成原理与汇编语言这两门课均对该内容有所讲解。与课程中直接抛出公式与概念不同&#xff0c;我想首先与各位探讨"科学计数法"这个…

分享我的写作经验

大家好&#xff0c;我是Z哥。最近一段时间&#xff0c;我面基了几个在微信上聊得不错的小伙伴。和其中的两位有聊到关于写作的事情。概括地说就是他们也想写写博客、公众号&#xff0c;但是感觉无从下手。我和他们分享了我的一些经验&#xff0c;在这里做一下总结和补充&#x…

数据结构——二叉树的最小深度算法

给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2 示例 2&#xff1a; 输入&#xff1a;root …

开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程

第九章我们使用汇编编写了 LED 灯的实验&#xff0c;在实际开发过程中大部分还是使用 C 语言&#xff0c;汇编只是用来完成 C 语言环境的初始化&#xff0c;本章我么就来实现用汇编完成 C 语言环境的初始化&#xff0c;然后用 C 语言实现 LED 的例程。10.1 C 程序版LED例程简介…

解锁环境变量在云原生应用中的各种姿势

应用程序在某些时刻总是需要一些外挂配置&#xff0c;云原生应用的实践是在容器化之前就将应用程序配置保留在代码之外。“12-Factors App&#xff1a;Store config in the environment① 外挂配置文件&#xff1a;业务配置 appsettings.json“可以在代码中要求加载appsetting.…

python字符串截取方法_如何使用python语言中的字符串方法截取字符串

在我们使用python语言中的字符串方法时&#xff0c;可能会判断某个字符串是否以什么开头&#xff0c;可以使用什么进行截取等。下面利用几个实例说明字符串中的方法的用法&#xff0c;操作如下&#xff1a;工具/原料 python 截图工具 方法/步骤 1 第一步&#xff0c;打开python…

数据结构——二叉树的层次遍历

问题描述&#xff1a; 给你一个二叉树&#xff0c;请你返回其按 层序遍历 得到的节点值。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例&#xff1a; 二叉树&#xff1a;[3,9,20,null,null,15,7] 返回其层次遍历结果&#xff1a; [ [3], [9,…

asp.net core 使用 TestServer 来做集成测试

asp.net core 使用 TestServer 来做集成测试Intro之前我的项目里的集成测试是随机一个端口&#xff0c;每次都真实的启动一个 WebServer&#xff0c;之前也有看到过微软文档上 TestServer 的介绍&#xff0c;当时没仔细看过以为差不多就没用&#xff0c;一直是启动了一个真正的…

python os system_python中os. popen system的区别

python调用Shell脚本或者是调用系统命令&#xff0c;有两种方法&#xff1a; os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码&#xff0c;正确会返回0&#xff0c;错误会返回其他数字。 后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。 p…

android 文件 c语言 jni,Android jni 调用的so文件一个函数的反汇编 高手来看看

[Asm] 纯文本查看 复制代码var_104 -0x104var_A0 -0xA0var_48 -0x48var_34 -0x34var_2C -0x2Cvar_28 -0x28STMFD SP!, {R4-R11,LR}LDR R8, (_GLOBAL_OFFSET_TABLE_ - 0x2B34)LDR R11, (__stack_chk_guard_ptr - 0xA104)SUB SP, SP, #0xE4ADD R8, PC, R8LDR R3, [R8,R11]ADD R4,…

数据结构——交换左右子树

递归——层次遍历—交换左右子树算法 思路&#xff1a; 与先序递归遍历类似 1如果有子树&#xff0c;交换这个节点的左右子树&#xff08;和交换两个变量的值一样&#xff09; 2再递归这个节点的左子树&#xff0c;右子树&#xff1b; #include<stdio.h> #include<b…