Golang生成Excel文檔的方法步驟_第1頁
Golang生成Excel文檔的方法步驟_第2頁
Golang生成Excel文檔的方法步驟_第3頁
Golang生成Excel文檔的方法步驟_第4頁
Golang生成Excel文檔的方法步驟_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第Golang生成Excel文檔的方法步驟目錄關(guān)于Excelize庫

性能對比

安裝

創(chuàng)建Excel文檔

實際場景復(fù)現(xiàn)

創(chuàng)建工作表

刪除默認(rèn)創(chuàng)建的工作表

合并單元格

單元格樣式

文字水平居中

給單元格設(shè)置純色填充

Style結(jié)構(gòu)體

參考文檔基于數(shù)據(jù)生成Excel文檔是一個很常見的需求,本文將介紹如何使用Go的Excelize庫去生成Excel文檔,以及一些具體場景下的代碼實現(xiàn)。

關(guān)于Excelize庫

Excelize是Go語言編寫的用于操作OfficeExcel文檔基礎(chǔ)庫,基于ECMA-376,ISO/IEC29500國際標(biāo)準(zhǔn)。可以使用它來讀取、寫入由MicrosoftExcel2007及以上版本創(chuàng)建的電子表格文檔。支持XLSX/XLSM/XLTM/XLTX等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復(fù)雜組件的文檔,并提供流式讀寫API,用于處理包含大規(guī)模數(shù)據(jù)的工作簿。可應(yīng)用于各類報表平臺、云計算、邊緣計算等系統(tǒng)。使用本類庫要求使用的Go語言為1.15或更高版本。

性能對比

下圖是一些主要的開源Excel庫在生成12800*50純文本矩陣時的性能對比(OS:macOSMojaveversion10.14.4,CPU:3.4GHzIntelCorei5,RAM:16GB2400MHzDDR4,HDD:1TB),包括Go、Python、Java、PHP和NodeJS。

安裝

最新的版本是v2.4.0:

goget/360EntSecGroup-Skylar/excelize/v2

創(chuàng)建Excel文檔

下面的案例中,我們創(chuàng)建了一個Excel文檔,并使用NewSheet方法新建了一個Sheet2工作表,Sheet1是默認(rèn)創(chuàng)建的工作表,然后我們使用SetCellValue方法分別在Sheet2工作表的A2單元格和Sheet1表格的B2單元格設(shè)置值,并通過使用SetActiveSheet方法設(shè)置Sheet2工作表為默認(rèn)的工作表,最終調(diào)用SaveAs方法將數(shù)據(jù)寫入Excel文檔中:

packagemain

import(

"fmt"

"/360EntSecGroup-Skylar/excelize/v2"

funcmain(){

f:=excelize.NewFile()

//創(chuàng)建一個工作表

index:=f.NewSheet("Sheet2")

//設(shè)置單元格的值

f.SetCellValue("Sheet2","A2","Helloworld.")

f.SetCellValue("Sheet1","B2",100)

//設(shè)置工作簿的默認(rèn)工作表

f.SetActiveSheet(index)

//根據(jù)指定路徑保存文件

iferr:=f.SaveAs("Book1.xlsx");err!=nil{

fmt.Println(err)

實際場景復(fù)現(xiàn)

創(chuàng)建工作表

工作表名稱是大小寫敏感的:

index:=f.NewSheet("Sheet2")

刪除默認(rèn)創(chuàng)建的工作表

默認(rèn)創(chuàng)建的Excel文檔是包含一個名為Sheet1的工作表,我們可能并不需要這個默認(rèn)工作表,這個時候我們可以刪除這個工作表:

f.DeleteSheet("Sheet1")

合并單元格

合并Sheet1工作表上F1:I2區(qū)域內(nèi)的單元格:

excel.MergeCell("Sheet1","F1","I2")

單元格樣式

給單元格設(shè)置樣式會經(jīng)常遇到,比如設(shè)置單元格的背景顏色,Excelize庫提供下面兩個方法進(jìn)行設(shè)置單元格樣式(NewStyle和SetCellStyle):

//通過給定的樣式格式JSON或結(jié)構(gòu)體的指針創(chuàng)建樣式并返回樣式索引。

//請注意,顏色需要使用RGB色域代碼表示。

style,err:=f.NewStyle(`{

"border":[

"type":"left",

"color":"0000FF",

"style":3

"type":"top",

"color":"00FF00",

"style":4

"type":"bottom",

"color":"FFFF00",

"style":5

"type":"right",

"color":"FF0000",

"style":6

"type":"diagonalDown",

"color":"A020F0",

"style":7

"type":"diagonalUp",

"color":"A020F0",

"style":8

iferr!=nil{

fmt.Println(err)

err=f.SetCellStyle("Sheet1","D7","D7",style)

文字水平居中

文字水平居中需要用到Alignment樣式結(jié)構(gòu)體:

typeAlignmentstruct{

Horizontalstring`json:"horizontal"`

Indentint`json:"indent"`

JustifyLastLinebool`json:"justify_last_line"`

ReadingOrderuint64`json:"reading_order"`

RelativeIndentint`json:"relative_indent"`

ShrinkToFitbool`json:"shrink_to_fit"`

TextRotationint`json:"text_rotation"`

Verticalstring`json:"vertical"`

WrapTextbool`json:"wrap_text"`

水平居中只要設(shè)置Horizontal的值為center即可:

style,err:=f.NewStyle(`{"alignment":{"horizontal":"center"}}`)

iferr!=nil{

fmt.Println(err)

err=excel.SetCellStyle("Sheet1","B1","B1",style)

給單元格設(shè)置純色填充

給單元格填充顏色會使用到Fill樣式結(jié)構(gòu)體:

typeFillstruct{

Typestring`json:"type"`

Patternint`json:"pattern"`

Color[]string`json:"color"`

Shadingint`json:"shading"`

Style結(jié)構(gòu)體

從上面設(shè)置樣式的代碼中,我們可以發(fā)現(xiàn)border是一個數(shù)組,而alignment是一個結(jié)構(gòu)體,這是由Style結(jié)構(gòu)體決定的:

typeStylestruct{

Border[]Border`json:"border"`

FillFill`json:"fill"`

Font*Font`json:"font"`

Alignment*Alignment`json:"alignment"`

Protection*Protection`json:"protection"`

NumFmtint`json:"number_format"`

DecimalPlacesint`json:"decimal_places"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論