最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang 模塊引入及表格讀寫業(yè)務(wù)快速實(shí)現(xiàn)示例

 更新時(shí)間:2022年07月25日 17:03:42   作者:jsmask  
這篇文章主要為大家介紹了Golang模塊引入及表格讀寫業(yè)務(wù)的快速實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

介紹

在很多管理系統(tǒng)下都有不少讓后端進(jìn)行表格進(jìn)行操作的業(yè)務(wù)需求,本期就帶大家了解一下Golang中如何使用模塊引入的,以及講解怎么快速的使用excelize庫(kù),對(duì)表格進(jìn)行讀寫創(chuàng)建的。

正文

配置模塊引入環(huán)境

我們?cè)谄谕趘scode終端中也可以使用模塊引入,它是 Go 1.11后新版模塊管理方式。

go env -w GO111MODULE=auto

GO111MODULE 可以傳遞:

  • auto:在其外層且根目錄里有 go.mod 文件時(shí),則開啟模塊支持,否者無模塊支持。
  • on:開啟模塊支持。
  • off:無模塊支持。

然后,初始化這個(gè)項(xiàng)目,就會(huì)生成一個(gè) go.mod 文件。

go mod init excel-demo

 go.mod 是Go 1.11版本引入的官方的包管理工具(之前為 gopath 來管理),它可以理解為前端開發(fā)中的 npm 的作用,主要是為了解決沒有記錄依賴包具體版本查閱困難的問題,也極大程度上方便了依賴包的管理。

引入excelize庫(kù)

excelize 是一個(gè)用于讀寫 Microsoft Excel™2007 及更高版本生成的電子表格文檔(XLAM / XLSM / XLSX / XLTM / XLTX)的 Go 語言庫(kù),而且更新維護(hù)頻繁且非常好用。

引入excelize

go get github.com/xuri/excelize/v2

這里因?yàn)檎军c(diǎn)是國(guó)外的所以經(jīng)常會(huì)因無法訪問而超時(shí)。此時(shí),不要慌,我們換一個(gè)國(guó)內(nèi)的代理就好了。

go env -w GOPROXY=https://goproxy.cn

創(chuàng)建表格

package main
import (
    "fmt"
    "github.com/xuri/excelize/v2"
)
func createExcel(){
    // 創(chuàng)建表格文件
	f := excelize.NewFile()
    // 在Sheet1設(shè)置A1項(xiàng)的值
	f.SetCellValue("Sheet1", "A1", "這是Sheet1的A1項(xiàng)")
    // 創(chuàng)建新的Sheet,命名為Sheet2
	selectIndex := f.NewSheet("Sheet2")
    // 在Sheet2設(shè)置B2項(xiàng)的值
	f.SetCellValue("Sheet2", "B2", "這是Sheet2的B2項(xiàng)")
    // 切換到Sheet2
    f.SetActiveSheet(selectIndex)
    // 保存文件
    if err := f.SaveAs("test.xlsx"); err != nil {
        fmt.Println(err)
    }
}
func main() {
    // 執(zhí)行創(chuàng)建表格
	createExcel()
}

按照以上是創(chuàng)建文件并在列上隨便寫入一些數(shù)據(jù)然后保存下來,非常的簡(jiǎn)單,現(xiàn)在我們來執(zhí)行一下,就會(huì)發(fā)現(xiàn)當(dāng)前目錄會(huì)多出一個(gè)text.xlsx文件,沒錯(cuò),這就是我們剛才生成出來的表格文件,打開它就可以看到我們剛才寫入的一些內(nèi)容了。

讀取表格

func openExcel(){
	// 讀取test.xlsx表格文件
	f, err := excelize.OpenFile("test.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    // 獲取Sheet2的B2項(xiàng)的值
    cell, err := f.GetCellValue("Sheet2", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
	fmt.Println(cell)
	fmt.Println("---------------")
	// 獲取Sheet1所有的項(xiàng)
    rows, err := f.GetRows("Sheet1")
    if err != nil {
        fmt.Println(err)
        return
	}
	// 遍歷Sheet1所有的項(xiàng)并打印出來
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

上面做的操作是把我們剛才保存好的表格文件的內(nèi)容讀取出來,這里分了兩種形式,一種是用 GetCellValue 方法讀取某個(gè)sheet的某一項(xiàng),另一種是用 GetRows 對(duì)獲取整個(gè)sheet的項(xiàng),然后for循環(huán)遍歷出來。

寫入表格

剛剛在創(chuàng)建的時(shí)候其實(shí)已經(jīng)使用 SetCellValue 方法對(duì)表格的寫入操作,但這還遠(yuǎn)遠(yuǎn)不夠,因?yàn)檫€有很多東西我們可以寫入進(jìn)去,比如說圖表和圖片甚至是其他表格文件。圖表這里先簡(jiǎn)單說明一下,它用了 AddChart 方法也是對(duì)某一項(xiàng)進(jìn)行操作,插入相關(guān)數(shù)據(jù)進(jìn)去,形式如下(詳見文檔):

if err := f.AddChart("Sheet1", "E1", `{
        "type": "col3DClustered",
        "series": [
        {
            "name": "Sheet1!$A$2",
            "categories": "Sheet1!$B$1:$D$1",
            "values": "Sheet1!$B$2:$D$2"
        }]
        }`); err != nil {
    fmt.Println(err)
    return
}

接下來,我們主要講一下圖片是如何寫入進(jìn)表格的,首先,我們先準(zhǔn)備一張圖片,就放在assets目錄吧,然后在到 import 中導(dǎo)入jpeg和png,目的是明確后面要解析的圖片(目前可以解析出jpeg,jpg,png格式的圖片了),如果不寫或者格式不對(duì)則會(huì)出現(xiàn) image: unknown format 的提示。

package main
import (
	"fmt"
	_ "image/jpeg"
    _ "image/png"
    "github.com/xuri/excelize/v2"
)

然后我們還是要讀取一下剛剛生成出來的test.xlsx表格文件,再把圖片寫入進(jìn)去。

func setPic(){
	f, err := excelize.OpenFile("test.xlsx")
    if err != nil {
        fmt.Println(err)
        return
	}
	// 導(dǎo)入并設(shè)置圖片
    if err := f.AddPicture("Sheet2", "C3", "assets/anya.png",
		`{
			"x_offset": 10,
        	"y_offset": 10,
			"x_scale": 0.8, 
			"y_scale": 0.8
		}`); err != nil {
        fmt.Println(err)
	}
	// 保存剛才的操作
	if err = f.Save(); err != nil {
        fmt.Println(err)
    }
}

而且圖片還可以這是位置,大小等參數(shù),但這里一定要記住不管添加了什么最后一定要保存一下,不然就是一場(chǎng)空。最后么,一個(gè)小阿尼亞就寫入到了表格中啦~

結(jié)語

本篇主要是帶大家簡(jiǎn)單了解怎么使用excelize庫(kù)對(duì)表格進(jìn)行操作,其實(shí)都還是皮毛,它的功能比你想的還要強(qiáng)大,詳細(xì)的可以看 官方文檔 ,算是一個(gè)非常實(shí)用的工具庫(kù)了,更多關(guān)于Go模塊引入表格讀寫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go 實(shí)現(xiàn)HTTP中間人代理的操作

    Go 實(shí)現(xiàn)HTTP中間人代理的操作

    這篇文章主要介紹了Go 實(shí)現(xiàn)HTTP中間人代理的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • go?REST?API設(shè)計(jì)模式和反模式示例解析

    go?REST?API設(shè)計(jì)模式和反模式示例解析

    在這篇文章中,我們將探討一些常見的REST?API設(shè)計(jì)模式和開發(fā)者應(yīng)該注意的反模式,我們還將提供Golang和Open?API?Schema的代碼片段來幫助說明這些概念,有需要的朋友可以借鑒參考下
    2023-09-09
  • Go語言使用Cobra實(shí)現(xiàn)強(qiáng)大命令行應(yīng)用

    Go語言使用Cobra實(shí)現(xiàn)強(qiáng)大命令行應(yīng)用

    Cobra是一個(gè)強(qiáng)大的開源工具,能夠幫助我們快速構(gòu)建出優(yōu)雅且功能豐富的命令行應(yīng)用,本文為大家介紹了如何使用Cobra打造強(qiáng)大命令行應(yīng)用,感興趣的小伙伴可以了解一下
    2023-07-07
  • 基于HLS創(chuàng)建Golang視頻流服務(wù)器的優(yōu)缺點(diǎn)

    基于HLS創(chuàng)建Golang視頻流服務(wù)器的優(yōu)缺點(diǎn)

    HLS 是 HTTP Live Streaming 的縮寫,是蘋果開發(fā)的一種基于 HTTP 的自適應(yīng)比特率流媒體傳輸協(xié)議。這篇文章主要介紹了基于 HLS 創(chuàng)建 Golang 視頻流服務(wù)器,需要的朋友可以參考下
    2021-08-08
  • Golang調(diào)用FFmpeg轉(zhuǎn)換視頻流的實(shí)現(xiàn)

    Golang調(diào)用FFmpeg轉(zhuǎn)換視頻流的實(shí)現(xiàn)

    本文主要介紹了Golang調(diào)用FFmpeg轉(zhuǎn)換視頻流,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Golang利用casbin實(shí)現(xiàn)權(quán)限驗(yàn)證詳解

    Golang利用casbin實(shí)現(xiàn)權(quán)限驗(yàn)證詳解

    Casbin是一個(gè)強(qiáng)大的、高效的開源訪問控制框架,其權(quán)限管理機(jī)制支持多種訪問控制模型,Casbin只負(fù)責(zé)訪問控制。本文將利用casbin實(shí)現(xiàn)權(quán)限驗(yàn)證功能,需要的可以參考一下
    2023-02-02
  • Golang實(shí)現(xiàn)快速求冪的方法詳解

    Golang實(shí)現(xiàn)快速求冪的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Golang實(shí)現(xiàn)快速求冪,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定參考價(jià)值,需要的可以參考一下
    2022-06-06
  • 使用Go語言實(shí)現(xiàn)并發(fā)處理CSV文件到數(shù)據(jù)庫(kù)

    使用Go語言實(shí)現(xiàn)并發(fā)處理CSV文件到數(shù)據(jù)庫(kù)

    Go?語言的?goroutine?和通道(channel)非常適合用來并發(fā)地處理數(shù)據(jù),本文將通過簡(jiǎn)單示例介紹一下如何使用Go語言并發(fā)地處理?CSV?文件并將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中,感興趣的可以了解下
    2025-01-01
  • golang特有程序結(jié)構(gòu)入門教程

    golang特有程序結(jié)構(gòu)入門教程

    GO語言是一門不錯(cuò)的編程語言能夠到達(dá)靜態(tài)編譯語言的安全和性能,在本文中重點(diǎn)給大家介紹goland特有程序結(jié)構(gòu)及引用類型別名的特征,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Go語言實(shí)現(xiàn)ssh&scp的方法詳解

    Go語言實(shí)現(xiàn)ssh&scp的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Go語言實(shí)現(xiàn)ssh&scp,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2022-10-10

最新評(píng)論

金塔县| 汶川县| 澄江县| 汕尾市| 武功县| 陆良县| 莱西市| 海盐县| 庄河市| 陆川县| 遵化市| 呼玛县| 兴山县| 南阳市| 禹州市| 临湘市| 江津市| 安化县| 绵竹市| 孝感市| 昌乐县| 鸡泽县| 伊宁县| 色达县| 汉川市| 包头市| 昌江| 吴江市| 鲜城| 长寿区| 开化县| 海林市| 丽江市| 平湖市| 南宁市| 乐山市| 赤城县| 汝阳县| 榆中县| 竹溪县| 勃利县|