小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

除了VBA,還有哪些編程語言可以操作Excel文件?

 知識情報院 2022-02-21

Excel(Microsoft office)是現(xiàn)在最常用的辦公軟件,主要涉及電子表格制作、數(shù)據(jù)處理、報表輸出展示以及更高端的還有金融建模等;我們知道,在需要批處理多個Excel工作表以及工作簿的時候,需要用到一個自動化的利器:VBA

VBA其實是Visual Basic嵌套在office軟件中的一個子集;VBA的功能很強大;但同時由于更新較少也有一些不方便的地方;比如VBA的數(shù)組功能一直被詬病,比如缺少智能提示的編輯器等等;那么有沒有其他的編程語言也可以操作Excel呢?

下面就讓我們來盤點一下:

Go語言 :Excelize

Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎庫,基于 ECMA-376,ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Microsoft Excel 2007 及以上版本創(chuàng)建的電子表格文檔。支持 XLSX / XLSM / XLTM 等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復雜組件的文檔,并提供流式讀寫 API,用于處理包含大規(guī)模數(shù)據(jù)的工作簿

Excelize是國人編寫的基于Go語言的Excel庫,中文文檔相對來說更為齊全,同時Go語言是編譯型語言,編譯后只有1個運行文件,可以方便的拷貝到其他電腦使用,同時不用安裝額外的運行時,Go語言還有一個優(yōu)勢就是,速度真的非???/p>

簡單入門

安裝
// 1、安裝Go語言程序
// 2、安裝Git

go get github.com/360EntSecGroup-Skylar/excelize
創(chuàng)建Excel文檔
package main

import (
    "fmt"

    "github.com/360EntSecGroup-Skylar/excelize"
)

func main() {
    f := excelize.NewFile()
    // 創(chuàng)建一個工作表
    index := f.NewSheet("Sheet2")
    // 設置單元格的值
    f.SetCellValue("Sheet2""A2""Hello world.")
    f.SetCellValue("Sheet1""B2"100)
    // 設置工作簿的默認工作表
    f.SetActiveSheet(index)
    // 根據(jù)指定路徑保存文件
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}
讀取Excel文檔
package main

import (
    "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, "\t")
        }
        fmt.Println()
    }
}

缺點

Go語言本身的錯誤處理真的是太迷了,可以看到每次對象賦值都要聲明err,然后判斷err != nil;同時在數(shù)據(jù)結構上,Go語言在對二維表(行列)操作時,也會有一點繞

結論

Excelize可以說是國內(nèi)最好的第三方Excel操作庫,雖然上手會有一點難度,但是在功能的豐富性和較好的運行性能,還是值得一試的

Excelize中文文檔鏈接


Python :Pandas

Pandas是一個強大的分析結構化數(shù)據(jù)的工具集;它的使用基礎是Numpy(提供高性能的矩陣運算),用于數(shù)據(jù)挖掘和數(shù)據(jù)分析。Pandas中有DataFrame和Series兩個數(shù)據(jù)類型,就好像Excel的工作表和數(shù)據(jù)列(轉(zhuǎn)置后也可以看作:數(shù)據(jù)行),這就和Excel天生契合

簡單入門

安裝
# 1、 使用conda安裝
conda install pandas

#/2、或者使用pip安裝
pip install pandas
讀取Excel文檔
import numpy as np
import pandas as pd

df = pd.read_excel(open('tmp.xlsx''rb'),
              sheet_name='Sheet3')
輸出Excel文檔
import numpy as np
import pandas as pd

df = pd.DataFrame([['a''b'], ['c''d']],
                   index=['row 1''row 2'],
                   columns=['col 1''col 2'])
df.to_excel("output.xlsx")  

缺點

Pandas在數(shù)據(jù)處理上是非常方便的,但在文檔外操作,如批量修改工作簿名稱,就需要引入os庫;同時如果已有Excel文檔是帶格式(顏色填充、字體設置、單元格合并等),寫入Excel的時候就會破壞掉原來的格式

同時,Python作為腳本語言,如果到其他電腦運行,需要額外安裝運行環(huán)境

結論

如果純粹的處理大批量數(shù)據(jù)(十萬級以上),pandas自帶各類聚合函數(shù),讓你處理起來得心應手;同時Pandas可以結合matplotlib等第三方繪圖庫,可以方便的可視化數(shù)據(jù) 如果你的數(shù)據(jù)本身可以離開Excel,如數(shù)據(jù)是從數(shù)據(jù)庫導入Excel,那么也可以直接使用Pandas導入數(shù)據(jù)庫數(shù)據(jù),然后在Pandas上進行分析處理;Pandas底層使用numpy,在矩陣運算中具有非常高的性能

Pandas文檔鏈接


Python :Openpyxl

openpyxl是一個用于讀取/寫入Excel2007及以上版本(即xlsx格式)文件的Python庫,不論是Excel內(nèi)的特殊格式,還是單元格處理,都提供了相應的函數(shù),與Excelize近乎相當

簡單入門

安裝
pip install openpyxl
創(chuàng)建文檔
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "新的工作表01"
ws.sheet_properties.tabColor = "1072BA"
wb.save('demo.xlsx')
讀取文檔
from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
print(wb.sheetnames) 

缺點

Openpyxl不像pandas那樣,底層使用numpy,所以在運行速度上,其實要比Excelize和pandas要慢(但是還是要比VBA要快一點);同時也是因為Python作為腳本語言,如果要放到其他電腦運行,需要安裝相應的運行環(huán)境

結論

相對來說,Openpyxl與VBA的應用場景重合度會更高一點,處理的思路都是比較相近的;Python在語法上,比VBA要豐富和方便的多,如果需要切換,學習曲線會比較平滑

Openpyxl文檔鏈接

Python :Xlwings

xlwings也是Python操作Excel的第三方庫,很大程度上就是補全Pandas的缺點,可以在方便的處理文檔本身,如修改工作表名稱,將Pandas的數(shù)據(jù)處理結果調(diào)用到Excel原來的文件等

簡單入門

安裝
pip install xlwings
創(chuàng)建和讀取Excel文檔
import xlwings as xw
wb = xw.Book()  
wb = xw.Book('FileName.xlsx'#創(chuàng)建一個新的Excel文件
wb = xw.Book(r'C:\path\to\file.xlsx')#讀取一個已有的Excel文件
sht = wb.sheets['Sheet1']
sht.range('A1').value = 'Foo 1'#單元格賦值
wb.save()

缺點

在功能上,如文檔格式化等相較Excelize和Openpyxl來說,還是有不少功能沒有實現(xiàn)

結論

xlwings更多的是可以作為xlwings的擴展,學習曲線和Openpyxl也比較相似

xlwings文檔鏈接

其他

其他的還有C#的EPPlus/NPOI;Java的POI,easyExcel;JavaScript的exceljs等,也是不錯的Excel操作庫;但學習曲線更為陡峭,應用場景也更為復雜。如果有一天,厭倦了VBA,但是又不想使用Go和Python,也是可以去嘗試一下的

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多