首頁 >後端開發 >Golang >golang實作excel讀寫

golang實作excel讀寫

王林
王林原創
2023-05-13 10:04:373549瀏覽

隨著資料處理的需求越來越重要,Excel表格中的資料逐漸成為了日常工作和生活中不可或缺的一部分。在Golang程式語言中,也有著優秀的函式庫可以輕鬆實現Excel檔案的讀寫操作,這篇文章將帶大家一步一步實現Golang版Excel檔案的讀寫。

  1. 安裝Excel處理程式庫

要實作Excel檔案的讀取與寫入操作,我們需要使用第三方的Golang程式庫,go-excelize。執行下列指令可安裝該函式庫:

go get github.com/360EntSecGroup-Skylar/excelize
  1. 讀取Excel文件

#首先,我們將開啟一個名為「test.xlsx」的Excel文件,並將其中的Sheet1作為需要讀取的表格。

f, err := excelize.OpenFile("./test.xlsx")
if err != nil {
    fmt.Println(err)
    return
}
// 取得 Sheet1 表格中所有的行
rows, err := f.GetRows("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}

透過GetRows方法,我們可以輕鬆取得Sheet1表格中的所有行。接下來,我們可以對每行資料進行遍歷,並列印出每個儲存格的值。

for i, row := range rows {
    for j, colCell := range row {
        fmt.Printf("(%d,%d) %s
", i+1, j+1, colCell)
    }
}
  1. 寫入Excel檔案

與讀取Excel檔案類似,我們先開啟一個名為「write.xlsx」的Excel文件,並且選取需要寫入的表格為Sheet1。

f := excelize.NewFile()
// 创建一个名为 Sheet1 的表格
sheetIndex := f.NewSheet("Sheet1")
// 设置 Sheet1 表格为当前操作表格
f.SetActiveSheet(sheetIndex)

現在,我們已經建立了一個新的Excel檔案並且新增了一個名為Sheet1的表格。接下來,我們可以將所需資料寫入表格中。

// 向 A1 单元格写入内容
f.SetCellValue("Sheet1", "A1", "姓名")
f.SetCellValue("Sheet1", "B1", "年龄")
f.SetCellValue("Sheet1", "C1", "性别")

// 写入数据行
f.SetCellValue("Sheet1", "A2", "张三")
f.SetCellValue("Sheet1", "B2", 26)
f.SetCellValue("Sheet1", "C2", "男")

f.SetCellValue("Sheet1", "A3", "李四")
f.SetCellValue("Sheet1", "B3", 28)
f.SetCellValue("Sheet1", "C3", "男")

f.SetCellValue("Sheet1", "A4", "小花")
f.SetCellValue("Sheet1", "B4", 24)
f.SetCellValue("Sheet1", "C4", "女")

透過上述程式碼,我們已經成功地將資料寫入了Excel表格中。最後,我們需要保存文件以確保資料可以持久化保存。

err := f.SaveAs("./write.xlsx")
if err != nil {
    fmt.Println(err)
}
  1. 完整程式碼

註:本範例程式碼僅為示範用途,讀取和寫入檔案所使用的表格格式需要根據實際情況調整。

完整程式碼如下:

package main

import (
    "fmt"
    "github.com/360EntSecGroup-Skylar/excelize"
)

func main() {
    // 读取 Excel 文件
    f, err := excelize.OpenFile("./test.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    // 取得 Sheet1 表格中所有的行
    rows, err := f.GetRows("Sheet1")
    if err != nil {
        fmt.Println(err)
        return
    }
    // 遍历所有单元格的数据
    for i, row := range rows {
        for j, colCell := range row {
            fmt.Printf("(%d,%d) %s
", i+1, j+1, colCell)
        }
    }

    // 创建 Excel 文件
    f := excelize.NewFile()
    // 创建一个名为 Sheet1 的表格
    sheetIndex := f.NewSheet("Sheet1")
    // 设置 Sheet1 表格为当前操作表格
    f.SetActiveSheet(sheetIndex)

    // 向 A1 单元格写入内容
    f.SetCellValue("Sheet1", "A1", "姓名")
    f.SetCellValue("Sheet1", "B1", "年龄")
    f.SetCellValue("Sheet1", "C1", "性别")

    // 写入数据行
    f.SetCellValue("Sheet1", "A2", "张三")
    f.SetCellValue("Sheet1", "B2", 26)
    f.SetCellValue("Sheet1", "C2", "男")

    f.SetCellValue("Sheet1", "A3", "李四")
    f.SetCellValue("Sheet1", "B3", 28)
    f.SetCellValue("Sheet1", "C3", "男")

    f.SetCellValue("Sheet1", "A4", "小花")
    f.SetCellValue("Sheet1", "B4", 24)
    f.SetCellValue("Sheet1", "C4", "女")

    // 保存 Excel 文件
    err := f.SaveAs("./write.xlsx")
    if err != nil {
        fmt.Println(err)
    }
}
  1. 總結

#透過以上的程式碼演示,我們可以看出,使用Golang實作Excel檔案的讀寫操作非常簡單和有效率。 go-excelize是Golang社群的一個強大函式庫,它提供了許多的功能來處理Excel檔案並且可以與其他函式庫整合使用。因此,Golang已經成為了處理Excel檔案非常好的選擇之一,希望能夠幫助大家。

以上是golang實作excel讀寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn