在 Go 中操作 Excel 文件,最常用的库是 excelize,它支持读取、写入和修改 Excel 文件。
1. 安装 excelize
首先,你需要安装 excelize 库:
go get /xuri/excelize/v22. 示例:创建并写入 Excel 文件
以下是一个简单的示例,展示了如何使用 excelize 创建一个 Excel 文件,并写入一些数据:
package main
import (
	"fmt"
	"/xuri/excelize/v2"
)
func main() {
	// 创建一个新的 Excel 文件
	f := excelize.NewFile()
	// 创建一个新的工作表,默认的工作表是 Sheet1
	sheet := "Sheet1"
	// 写入数据
	f.SetCellValue(sheet, "A1", "Hello")  // 在 A1 单元格写入 "Hello"
	f.SetCellValue(sheet, "B1", "World")  // 在 B1 单元格写入 "World"
	f.SetCellValue(sheet, "A2", "GoLang") // 在 A2 单元格写入 "GoLang"
	f.SetCellValue(sheet, "B2", "Excel")  // 在 B2 单元格写入 "Excel"
	// 保存文件到本地
	if err := f.SaveAs("example.xlsx"); err != nil {
		fmt.Println("Error saving file:", err)
		return
	}
	fmt.Println("Excel file created successfully")
}3. 示例:读取 Excel 文件
下面是如何读取已存在的 Excel 文件并打印内容的示例:
package main
import (
	"fmt"
	"/xuri/excelize/v2"
)
func main() {
	// 打开现有的 Excel 文件
	f, err := excelize.OpenFile("example.xlsx")
	if err != nil {
		fmt.Println("Error opening file:", err)
		return
	}
	// 获取指定工作表的所有行数据
	sheet := "Sheet1"
	rows, err := f.GetRows(sheet)
	if err != nil {
		fmt.Println("Error reading rows:", err)
		return
	}
	// 遍历并打印所有行
	for i, row := range rows {
		fmt.Printf("Row %d: %v\n", i+1, row)
	}
}4. 示例:更新单元格值
以下是如何在一个现有 Excel 文件中更新某个单元格值的示例:
package main
import (
	"fmt"
	"/xuri/excelize/v2"
)
func main() {
	// 打开现有的 Excel 文件
	f, err := excelize.OpenFile("example.xlsx")
	if err != nil {
		fmt.Println("Error opening file:", err)
		return
	}
	// 更新单元格 A1 的内容
	if err := f.SetCellValue("Sheet1", "A1", "Updated Value"); err != nil {
		fmt.Println("Error setting cell value:", err)
		return
	}
	// 保存文件
	if err := f.Save(); err != nil {
		fmt.Println("Error saving file:", err)
		return
	}
	fmt.Println("Excel file updated successfully")
}5. 示例:读取单元格值
如何读取 Excel 文件中某个单元格的值:
package main
import (
	"fmt"
	"/xuri/excelize/v2"
)
func main() {
	// 打开现有的 Excel 文件
	f, err := excelize.OpenFile("example.xlsx")
	if err != nil {
		fmt.Println("Error opening file:", err)
		return
	}
	// 读取单元格 A1 的值
	cellValue, err := f.GetCellValue("Sheet1", "A1")
	if err != nil {
		fmt.Println("Error getting cell value:", err)
		return
	}
	fmt.Printf("The value of A1 is: %s\n", cellValue)
}6. 示例:添加新工作表
如果你想在现有 Excel 文件中添加一个新的工作表,可以使用 NewSheet 方法:
package main
import (
	"fmt"
	"/xuri/excelize/v2"
)
func main() {
	// 创建一个新的 Excel 文件
	f := excelize.NewFile()
	// 创建新的工作表
	index := f.NewSheet("NewSheet")
	// 写入数据到新工作表
	f.SetCellValue("NewSheet", "A1", "This is a new sheet")
	// 设置 "Sheet1" 为默认工作表
	f.SetActiveSheet(index)
	// 保存文件
	if err := f.SaveAs("example_with_new_sheet.xlsx"); err != nil {
		fmt.Println("Error saving file:", err)
		return
	}
	fmt.Println("Excel file with new sheet created successfully")
}7. 其他常用操作
- 删除工作表:f.DeleteSheet("SheetName")
- 合并单元格:f.MergeCell("Sheet1", "A1", "B2")
- 设置单元格样式:通过 excelize.NewStyle创建样式,使用f.SetCellStyle应用到单元格。
                
 
 
                     
            
        













 
                    

 
                 
                    