Golang Excelize 2.2.0 正式发布
Golang Excelize 2.2.0 正式发布
Excelize 是一个用纯 Go 语言编写的库,提供了一系列函数,允许您读写 XLSX / XLSM / XLTM 文件。支持读写由 Microsoft Excel™ 2007 及更高版本生成的电子表格文档。通过高兼容性支持复杂组件,并提供了流式 API,用于从包含大量数据的工作表中生成或读取数据。
GitHub: github.com/xuri/excelize
我们很高兴地宣布版本 2.2.0 的发布。本次更新包含了一些新的功能领域和大量的错误修复。
变更摘要可在 发布说明 中查看。完整的变更列表可在 更新日志 中找到。
发布说明
本次发布中最显著的变化包括:
显著特性
- 在以下函数中使用工作表索引代替 ID:
GetSheetName、GetSheetIndex、GetActiveSheetIndex和SetActiveSheet,相关议题 #485 - 新增函数
GetSheetList以获取工作簿中的工作表、图表工作表和对话框工作表名称列表 - 新增函数
AddChartSheet支持创建图表工作表,相关议题 #451 - 新增函数
UnsetConditionalFormat,支持移除条件格式,相关议题 #571 - 新增函数
DeleteDataValidation,支持删除数据验证,相关议题 #348 - 新增函数
SetCellRichText,支持设置富文本,相关议题 #172 - 新增函数
InsertPageBreak和RemovePageBreak,支持插入和移除分页符,相关议题 #492 AddPivotTableAPI 已更改,支持设置数据透视表的日期字段小计和名称,相关议题 #582AddPivotTable支持为数据透视表设置筛选器,相关议题 #598AddPivotTable允许数据透视表中的筛选器、数据和行为空- 导出
ExcelDateToTime函数以将 Excel 日期转换为时间 - 导出
Style结构体,允许通过给定的 JSON 或结构体指针为单元格创建样式,相关议题 #470
错误修复
- 修复了通过
SetConditionalFormat为单元格设置条件格式时,greaterThanOrEqual和lessThanOrEqual运算符无效的问题,解决议题 #608 - 修复了由
StreamWriter创建的工作表损坏问题,解决议题 #576 - 转义公式中的字符,解决议题 #578
- 修复了
DuplicateRowTo函数不复制合并单元格的问题,解决议题 #586 - 通过忽略空的条件格式样式,修复条件格式隐藏相邻边框的问题,解决议题 #200
- 修复了
GetComments缺失批注的问题,解决议题 #345 - 修复了在某些情况下
GetCellValue读取错误字符串的问题,解决议题 #602 - 检查并填充行元素中没有
r属性的单元格,修复在某些情况下GetCellValue返回空值的问题 - 允许空或默认的单元格样式格式,解决 #628
性能
- 减少
getRowHeight中冗余的内存拷贝
杂项
- 移除计算属性,以便在某些电子表格应用程序(如金山 WPS™ Office)中重新计算公式
- 在单元测试中添加缺失的错误检查
- 更新了支持多语言(英语、法语、俄语、中文、日语和韩语)的文档网站
更多关于Golang Excelize 2.2.0 正式发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Excelize 2.2.0 正式发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Excelize 2.2.0 的发布带来了多项重要改进和新功能,对于处理Excel文件的Go开发者来说非常实用。以下是一些关键特性的代码示例:
1. 使用工作表索引代替ID
f := excelize.NewFile()
index := f.GetActiveSheetIndex()
name := f.GetSheetName(index)
f.SetActiveSheet(index)
2. 获取工作表列表
f := excelize.NewFile()
sheetList := f.GetSheetList()
// sheetList 包含所有工作表名称
3. 创建图表工作表
f := excelize.NewFile()
// 先创建普通工作表并添加数据
f.SetCellValue("Sheet1", "A1", "月份")
f.SetCellValue("Sheet1", "B1", "销售额")
// 添加数据...
// 创建图表
chart := excelize.Chart{
Type: excelize.Col,
Series: []excelize.ChartSeries{
{
Name: "Sheet1!$B$1",
Categories: "Sheet1!$A$2:$A$7",
Values: "Sheet1!$B$2:$B$7",
},
},
}
// 创建图表工作表
f.AddChartSheet("Chart1", &chart)
4. 设置富文本
f := excelize.NewFile()
richText := []excelize.RichTextRun{
{
Text: "粗体",
Font: &excelize.Font{
Bold: true,
Color: "2354e8",
Family: "Times New Roman",
},
},
{
Text: "普通",
Font: &excelize.Font{
Family: "Arial",
},
},
}
f.SetCellRichText("Sheet1", "A1", richText)
5. 分页符操作
f := excelize.NewFile()
// 在第10行后插入水平分页符
f.InsertPageBreak("Sheet1", "A11")
// 移除分页符
f.RemovePageBreak("Sheet1", "A11")
6. 使用导出的Style结构体
f := excelize.NewFile()
style := &excelize.Style{
Font: &excelize.Font{
Bold: true,
Size: 12,
},
Fill: excelize.Fill{
Type: "pattern",
Color: []string{"#E0EBF5"},
Pattern: 1,
},
}
styleID, _ := f.NewStyle(style)
f.SetCellStyle("Sheet1", "A1", "A10", styleID)
7. Excel日期转换
f := excelize.NewFile()
excelTime := 44197.0 // Excel日期值
goTime, _ := excelize.ExcelDateToTime(excelTime, false)
fmt.Println(goTime.Format("2006-01-02"))
这些新功能显著增强了Excelize库的实用性,特别是在处理复杂Excel文档时。错误修复也解决了一些长期存在的问题,提高了库的稳定性和可靠性。

