|
本帖最后由 xurime 于 2019-12-6 12:49 编辑
分享一个 Go 语言 Excel 文档基础库,希望帮助到有需要的朋友。
在一些情况下我们需要通过程序操作 Excel 文档,例如:打开读取已有 Excel 文档内容、创建新的 Excel 文档、基于已有文档(模版)生成新的 Excel 文档、向 Excel 文档中插入图片、图表和表格等元素,有时还需要跨平台实现这些操作。使用 Excelize 可以方便的满足上述需求。
- 源代码:github.com/360EntSecGroup-Skylar/excelize
- 中文文档:https://xuri.me/excelize/zh-hans
创建 Excel 文档
下面是一个创建 Excel 文档的简单例子: - package main
- import (
- "fmt"
- "github.com/360EntSecGroup-Skylar/excelize"
- )
- func main() {
- f := excelize.NewFile()
- // 创建一个工作表
- index := f.NewSheet("Sheet2")
- // 设置单元格的值
- f.SetCellValue("Sheet2", "A2", "Hello world.")
- f.SetCellValue("Sheet1", "B2", 100)
- // 设置工作簿的默认工作表
- f.SetActiveSheet(index)
- // 根据指定路径保存文件
- err := f.SaveAs("./Book1.xlsx")
- if err != nil {
- fmt.Println(err)
- }
- }
复制代码
读取 Excel 文档
下面是读取 Excel 文档的例子: - package main
- import (
- "fmt"
- "github.com/360EntSecGroup-Skylar/excelize"
- )
- func main() {
- f, err := excelize.OpenFile("./Book1.xlsx")
- if err != nil {
- fmt.Println(err)
- return
- }
- // 获取工作表中指定单元格的值
- cell, err := f.GetCellValue("Sheet1", "B2")
- if err != nil {
- fmt.Println(err)
- return
- }
- fmt.Println(cell)
- // 获取 Sheet1 上所有单元格
- rows, err := f.GetRows("Sheet1")
- for _, row := range rows {
- for _, colCell := range row {
- fmt.Print(colCell, "\t")
- }
- fmt.Println()
- }
- }
复制代码
在 Excel 文档中创建图表 使用 Excelize 生成图表十分简单,仅需几行代码。您可以根据工作表中的已有数据构建图表,或向工作表中添加数据并创建图表。 - package main
- import (
- "fmt"
- "github.com/360EntSecGroup-Skylar/excelize"
- )
- func main() {
- categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
- values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
- f := excelize.NewFile()
- for k, v := range categories {
- f.SetCellValue("Sheet1", k, v)
- }
- for k, v := range values {
- f.SetCellValue("Sheet1", k, v)
- }
- err := f.AddChart("Sheet1", "E1", `{"type":"col3DClustered","series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"},{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"title":{"name":"Fruit 3D Clustered Column Chart"}}`)
- if err != nil {
- fmt.Println(err)
- }
- // 根据指定路径保存文件
- err = f.SaveAs("./Book1.xlsx")
- if err != nil {
- fmt.Println(err)
- }
- }
复制代码
向 Excel 文档中插入图片
- package main
- import (
- "fmt"
- _ "image/gif"
- _ "image/jpeg"
- _ "image/png"
- "github.com/360EntSecGroup-Skylar/excelize"
- )
- func main() {
- f, err := excelize.OpenFile("./Book1.xlsx")
- if err != nil {
- fmt.Println(err)
- return
- }
- // 插入图片
- err = f.AddPicture("Sheet1", "A2", "./image1.png", "")
- if err != nil {
- fmt.Println(err)
- }
- // 在工作表中插入图片,并设置图片的缩放比例
- err = f.AddPicture("Sheet1", "D2", "./image2.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`)
- if err != nil {
- fmt.Println(err)
- }
- // 在工作表中插入图片,并设置图片的打印属性
- err = f.AddPicture("Sheet1", "H2", "./image3.gif", `{"x_offset": 15, "y_offset": 10, "print_obj": true, "lock_aspect_ratio": false, "locked": false}`)
- if err != nil {
- fmt.Println(err)
- }
- // 保存文件
- err = f.Save()
- if err != nil {
- fmt.Println(err)
- }
- }
复制代码
|
评分
-
1
查看全部评分
-
|