溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Golang模塊引入及表格讀寫業(yè)務如何實現

發(fā)布時間:2022-07-26 09:18:39 來源:億速云 閱讀:114 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“Golang模塊引入及表格讀寫業(yè)務如何實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Golang模塊引入及表格讀寫業(yè)務如何實現”吧!

    正文

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

    我們在期望在vscode終端中也可以使用模塊引入,它是 Go 1.11后新版模塊管理方式。

    go env -w GO111MODULE=auto

    GO111MODULE 可以傳遞:

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

    • on:開啟模塊支持。

    • off:無模塊支持。

    然后,初始化這個項目,就會生成一個 go.mod 文件。

    go mod init excel-demo

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

    引入excelize庫

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

    引入excelize

    go get github.com/xuri/excelize/v2

    這里因為站點是國外的所以經常會因無法訪問而超時。此時,不要慌,我們換一個國內的代理就好了。

    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設置A1項的值
    	f.SetCellValue("Sheet1", "A1", "這是Sheet1的A1項")
        // 創(chuàng)建新的Sheet,命名為Sheet2
    	selectIndex := f.NewSheet("Sheet2")
        // 在Sheet2設置B2項的值
    	f.SetCellValue("Sheet2", "B2", "這是Sheet2的B2項")
        // 切換到Sheet2
        f.SetActiveSheet(selectIndex)
        // 保存文件
        if err := f.SaveAs("test.xlsx"); err != nil {
            fmt.Println(err)
        }
    }
    func main() {
        // 執(zhí)行創(chuàng)建表格
    	createExcel()
    }

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

    Golang模塊引入及表格讀寫業(yè)務如何實現

    讀取表格

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

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

    Golang模塊引入及表格讀寫業(yè)務如何實現

    寫入表格

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

    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
    }

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

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

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

    func setPic(){
    	f, err := excelize.OpenFile("test.xlsx")
        if err != nil {
            fmt.Println(err)
            return
    	}
    	// 導入并設置圖片
        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)
        }
    }

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

    Golang模塊引入及表格讀寫業(yè)務如何實現

    感謝各位的閱讀,以上就是“Golang模塊引入及表格讀寫業(yè)務如何實現”的內容了,經過本文的學習后,相信大家對Golang模塊引入及表格讀寫業(yè)務如何實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI