Golang Excelize 2.7.1 发布 - 强大的开源电子表格(Excel)文档处理库
Golang Excelize 2.7.1 发布 - 强大的开源电子表格(Excel)文档处理库

Excelize 是一个用纯 Go 语言编写的库,提供了一系列函数,允许您读写 XLAM / XLSM / XLSX / XLTM / XLTX 文件。支持读写由 Microsoft Excel™ 2007 及更高版本生成的电子表格文档。通过高兼容性支持复杂组件,并提供了流式 API,用于从包含大量数据的工作表中生成或读取数据。
GitHub: github.com/xuri/excelize
我们很高兴地宣布发布 2.7.1 版本。此版本包含一些新的功能领域和大量错误修复。
发布说明
此版本中最显著的变化包括:
重大变更
- 移除了
ChartLine数据类型中的Color字段 - 将数据类型
ShapeParagraph替换为RichTextRun - 从
Shape类型中移除了Color字段,并使用Fill字段替代 - 移除了导出的类型
AutoFilterListOptions - 将导出的类型
TableOptions重命名为Table AddChart函数要求使用ChartType枚举值来指定图表类型- 更改了 7 个函数的签名:
- 将
func (f *File) AutoFilter(sheet, rangeRef string, opts *AutoFilterOptions) error更改为func (f *File) AutoFilter(sheet, rangeRef string, opts []AutoFilterOptions) error - 将
func (f *File) AddPictureFromBytes(sheet, cell, name, extension string, file []byte, opts *GraphicOptions) error更改为func (f *File) AddPictureFromBytes(sheet, cell string, pic *Picture) error - 将
func (f *File) GetPicture(sheet, cell string) (string, []byte, error)更改为func (f *File) GetPictures(sheet, cell string) ([]Picture, error) - 将
func (f *File) AddVBAProject(bin string) error更改为func (f *File) AddVBAProject(file []byte) error - 将
func (f *File) GetComments() (map[string][]Comment, error)更改为func (f *File) GetComments(sheet string) ([]Comment, error) - 将
func (f *File) AddTable(sheet, rangeRef string, opts *TableOptions) error更改为func (f *File) AddTable(sheet string, table *Table) error - 将
func (sw *StreamWriter) AddTable(rangeRef string, opts *TableOptions) error更改为func (sw *StreamWriter) AddTable(table *Table) error
- 将
显著特性
- 新增函数
SetSheetDimension和GetSheetDimension以支持工作簿维度,相关议题 #1463 NewStyle函数支持创建 17 种填充变体样式- 将最大单元格样式限制增加到 65430
AddPicture函数允许插入 BMP 格式图像GetPictures函数支持获取一个单元格中的多个图像SetConditionalFormat函数支持创建带有“如果为真则停止”或“图标集”规则的条件格式SetConditionalFormat函数支持为数据条设置边框颜色并创建纯色,相关议题 #1462AddChart函数支持设置图表数据系列的纯色填充格式,相关议题 #1474AddChart函数支持设置数据系列中的气泡大小AddChart函数支持为复合条饼图或复合饼图的第二个绘图区指定数值AddChart函数支持为图表数据标签和坐标轴设置数字格式,相关议题 #1499AddTable函数支持在创建表格时指定是否显示表格标题行AddTable函数支持验证表格名称,并新增了一个错误常量ErrTableNameLength,相关议题 #1468AutoFilter函数支持在创建自动筛选时添加多个筛选列CalcCellValue函数支持指定是否为单元格计算结果应用数字格式样式CalcCellValue函数支持公式函数 LEFT、LEN、LENB、MID、MIDB、RIGHT 和 RIGHTB 使用双字节字符,相关议题 #1476CalcCellValue函数现在会在结果中返回公式错误字符串,并在返回的错误中使用错误消息,相关议题 #1490- 图像文件扩展名不区分大小写,相关议题 #1503
- 流式写入器在遇到 nil 值时会跳过设置单元格值,相关议题 #756
GetCellHyperLink函数支持获取合并单元格的单元格超链接- 新增导出的数据类型
ChartType用于表示图表类型枚举
提升兼容性
- 添加对工作簿函数组的支持
- 添加对严格主题命名空间的支持,相关议题 #1447
- 修复因工作簿关系部分不存在而导致的 panic
- 提高了与包含空白字符的 SST 索引的兼容性,相关议题 #1508
错误修复
- 修复某些情况下数字格式舍入问题
- 修复使用时间数字修改字符串单元格时导致的单元格类型不正确问题,解决议题 #1464
- 修复单元格解析器导致的计算结果不正确问题,解决议题 #1469
- 修复条件格式数据条最小/最大值不生效的问题,解决议题 #1492
- 支持 0 行高和列宽,解决议题 #1461
性能
- 提高了应用月份名称数字格式的性能,相关议题 #1455
- 加速了检查合并单元格的过程,相关议题 #1448
其他
- 纯 WebAssembly / Javascript 移植的 Go Excelize 库,名为 excelize-wasm 的 NPM 包已可用于生产环境
- 已更新依赖模块
- 更新了单元测试和 godoc
- 在变量和函数中使用专用名称
- 包含多语言(阿拉伯语、德语、西班牙语、英语、法语、俄语、中文、日语和韩语)的文档网站已更新
致谢
感谢所有为 Excelize 做出贡献的人。以下是此版本中有代码贡献的贡献者列表:
- liron-l (Liron Levin)
- nathj07 (Nathan Davies)
- Josh-Weston (Josh Weston)
- jaby
- FlowingSPDG (Shugo Kawamura)
- barismar (Baris Mar Aziz)
- doingNobb (张涛)
- rpoetrap (Rizki Putra)
- huangshaokun
- CHANTXU64 (ChantXu64)
- playGitboy
更多关于Golang Excelize 2.7.1 发布 - 强大的开源电子表格(Excel)文档处理库的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Excelize 2.7.1 发布 - 强大的开源电子表格(Excel)文档处理库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Excelize 2.7.1 的发布确实带来了不少重要更新,特别是 API 的调整和新功能的加入。下面针对几个关键变更给出示例代码:
1. AddPictureFromBytes 函数变更示例
旧版本:
err := f.AddPictureFromBytes("Sheet1", "A1", "logo", ".png", imgBytes, &excelize.GraphicOptions{...})
新版本:
pic := &excelize.Picture{
File: imgBytes,
Format: &excelize.GraphicOptions{...},
}
err := f.AddPictureFromBytes("Sheet1", "A1", pic)
2. AutoFilter 函数支持多列筛选
err := f.AutoFilter("Sheet1", "A1:D10", []excelize.AutoFilterOptions{
{Column: "B", Expression: "x > 0"},
{Column: "C", Expression: "y < 10"},
})
3. AddTable 函数使用新签名
err := f.AddTable("Sheet1", &excelize.Table{
Range: "A1:D10",
Name: "Table1",
StyleName: "TableStyleMedium2",
})
4. 新增图表类型枚举使用
err := f.AddChart("Sheet1", "E1", &excelize.Chart{
Type: excelize.Col3DClustered,
Series: []excelize.ChartSeries{...},
})
5. 获取单元格多个图片
pics, err := f.GetPictures("Sheet1", "A1")
for _, pic := range pics {
fmt.Println(pic.Extension, len(pic.File))
}
6. 条件格式设置数据条边框
err := f.SetConditionalFormat("Sheet1", "A1:A10", []excelize.ConditionalFormatOptions{
{
Type: "dataBar",
Criteria: "=",
Format: 0,
MinType: "num",
MaxType: "num",
BarBorderColor: "#FF0000",
},
})
这些 API 变更虽然需要代码调整,但新设计更加一致和灵活。特别是 Picture 和 Table 结构体的引入,让相关操作更符合 Go 语言的惯用法。

