Golang Excelize 2.3.0 版本发布

Golang Excelize 2.3.0 版本发布 github.com/360EntSecGroup-Skylar/excelize

Excelize 是一个用纯 Go 语言编写的库,提供了一系列函数,允许您读写 XLSX / XLSM / XLTM 文件。支持读写由 Microsoft Excel™ 2007 及更高版本生成的电子表格文档。通过高兼容性支持复杂组件,并提供了流式 API,用于从包含大量数据的工作表中生成或读取数据。

GitHub: github.com/xuri/excelize

我们很高兴地宣布 2.3.0 版本的发布。本次更新包含了一些新的功能领域和大量的错误修复。

变更摘要可在 发布说明 中查看。完整的变更列表可在 更新日志 中找到。

发布说明

本次发布中最值得注意的变更有:

重要特性

  • 支持并发设置单元格值,相关议题 #670
  • 新增 API: SetSheetFormatPrGetSheetFormatPr,支持设置和获取工作表格式属性,相关议题 #635
  • 新增 API: GetColsCols,支持列迭代器
  • AddChart 支持在 Y 轴上指定对数刻度,相关议题 #661
  • AddPicture 支持插入图片自动适应单元格
  • 增加了总列数、行数和文件名的长度限制
  • 公式计算引擎支持定义名称,相关议题 #665
  • API CalcCellValue 更新,公式计算引擎持续开发中:已添加 12 个新函数,COUNTAISBLANKISERRISERRORISEVENISNAISNONTEXTISODDISNUMBERMEDIANNASUMIF

提升兼容性

  • 兼容区分大小写的文档部件路径
  • 将字符串存储到 SST(共享字符串表),相关议题 #622
  • 支持工作表中没有 r 属性的 row 元素
  • 支持 XML 多命名空间,使其与金山 WPS™ Office 兼容,相关议题 #651
  • 改进了与 Office 2007 - 2010 的自动筛选兼容性,解决 #637

错误修复

  • 避免在工作簿定义名称中重复筛选数据库
  • 避免创建重复样式,解决 #643
  • 为设置富文本转义字符
  • 修复了使用 Excelize 创建的电子表格在重新打开后批注形状发生变化的问题,解决 #672
  • 修复启用编译器内联标志时的 panic,解决 #677 和 #679
  • 修复获取百分比单元格值的精度问题

其他

  • 改进了错误处理,修复了打开无效电子表格文件时的崩溃问题
  • 在单元测试中添加了缺失的错误检查
  • 文档网站 已更新,支持多语言:英语、法语、俄语、中文、日语和韩语
  • 欢迎加入 Slack 频道 与社区其他成员交流

更多关于Golang Excelize 2.3.0 版本发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

docx 何时可用

更多关于Golang Excelize 2.3.0 版本发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Excelize 2.3.0 版本的发布带来了多项重要更新,特别是在并发操作、API 增强和兼容性方面。以下是对部分关键特性的代码示例说明:

1. 并发设置单元格值

现在支持使用 goroutine 并发写入单元格,提升大数据量下的写入性能。示例:

package main

import (
    "fmt"
    "sync"
    "github.com/xuri/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    var wg sync.WaitGroup
    for i := 1; i <= 100; i++ {
        wg.Add(1)
        go func(row int) {
            defer wg.Done()
            cell, _ := excelize.CoordinatesToCellName(1, row)
            f.SetCellValue("Sheet1", cell, fmt.Sprintf("并发数据%d", row))
        }(i)
    }
    wg.Wait()
    f.SaveAs("并发示例.xlsx")
}

2. 新增列迭代器 API GetColsCols

GetCols 可一次性获取所有列数据,Cols 提供流式迭代支持。示例:

// GetCols 示例
cols, err := f.GetCols("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for _, col := range cols {
    for _, cell := range col {
        fmt.Print(cell, "\t")
    }
    fmt.Println()
}

// Cols 迭代器示例
cols, err := f.Cols("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for cols.Next() {
    col, _ := cols.Rows()
    for _, cell := range col {
        fmt.Print(cell, "\t")
    }
    fmt.Println()
}

3. 工作表格式属性 API

新增 SetSheetFormatPrGetSheetFormatPr 用于设置和获取工作表基础格式。示例:

// 设置默认行高和列宽
err := f.SetSheetFormatPr("Sheet1",
    excelize.BaseColWidth(10),
    excelize.DefaultRowHeight(20),
)
if err != nil {
    fmt.Println(err)
}

// 获取格式属性
formatPr, err := f.GetSheetFormatPr("Sheet1")
if err != nil {
    fmt.Println(err)
}
fmt.Printf("默认行高: %v\n", formatPr.DefaultRowHeight)

4. 图表 Y 轴对数刻度支持

AddChart 现在支持为 Y 轴配置对数刻度。示例:

if err := f.AddChart("Sheet1", "E1", &excelize.Chart{
    Type: excelize.Col,
    Series: []excelize.ChartSeries{
        {
            Name:       "Sheet1!$A$1",
            Categories: "Sheet1!$B$1:$B$5",
            Values:     "Sheet1!$A$1:$A$5",
        },
    },
    Format: excelize.GraphicOptions{ScaleX: 1, ScaleY: 1},
    YAxis: excelize.ChartAxis{
        LogarithmicBase: 10, // 设置 Y 轴为以10为底的对数刻度
    },
}); err != nil {
    fmt.Println(err)
}

5. 图片自适应单元格

AddPicture 新增 FitCell 选项,使图片自动适应单元格尺寸。示例:

// 插入图片并自适应到单元格 B2
err := f.AddPicture("Sheet1", "B2", "image.png",
    &excelize.GraphicOptions{
        FitCell:     true,    // 启用自适应
        Positioning: "oneCell",
    },
)

6. 公式计算引擎增强

新增 12 个函数支持,例如 SUMIFMEDIAN。示例:

f.SetCellFormula("Sheet1", "C1", "SUMIF(A1:A10,\">5\",B1:B10)")
// 计算公式结果
result, err := f.CalcCellValue("Sheet1", "C1")
if err != nil {
    fmt.Println(err)
}
fmt.Println("SUMIF 结果:", result)

7. 兼容性改进

修复了与 WPS Office 的兼容性问题,现在可正确处理多命名空间 XML。示例中无需额外代码,库已自动处理。

错误修复示例

修复了批注形状变化问题,现在插入批注后保存再打开不会变形:

err := f.AddComment("Sheet1", "A1", `{"author":"Excelize: ","text":"这是一个批注"}`)
if err != nil {
    fmt.Println(err)
}

这些更新显著提升了 Excelize 在性能、功能和兼容性方面的表现,建议升级到 2.3.0 版本以利用新特性。

回到顶部