Golang Excelize 2.2.0 正式发布

Golang Excelize 2.2.0 正式发布 github.com/360EntSecGroup-Skylar/excelize

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

GitHub: github.com/xuri/excelize

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

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

发布说明

本次发布中最显著的变化包括:

显著特性

  • 在以下函数中使用工作表索引代替 ID:GetSheetNameGetSheetIndexGetActiveSheetIndexSetActiveSheet,相关议题 #485
  • 新增函数 GetSheetList 以获取工作簿中的工作表、图表工作表和对话框工作表名称列表
  • 新增函数 AddChartSheet 支持创建图表工作表,相关议题 #451
  • 新增函数 UnsetConditionalFormat,支持移除条件格式,相关议题 #571
  • 新增函数 DeleteDataValidation,支持删除数据验证,相关议题 #348
  • 新增函数 SetCellRichText,支持设置富文本,相关议题 #172
  • 新增函数 InsertPageBreakRemovePageBreak,支持插入和移除分页符,相关议题 #492
  • AddPivotTable API 已更改,支持设置数据透视表的日期字段小计和名称,相关议题 #582
  • AddPivotTable 支持为数据透视表设置筛选器,相关议题 #598
  • AddPivotTable 允许数据透视表中的筛选器、数据和行为空
  • 导出 ExcelDateToTime 函数以将 Excel 日期转换为时间
  • 导出 Style 结构体,允许通过给定的 JSON 或结构体指针为单元格创建样式,相关议题 #470

错误修复

  • 修复了通过 SetConditionalFormat 为单元格设置条件格式时,greaterThanOrEquallessThanOrEqual 运算符无效的问题,解决议题 #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

1 回复

更多关于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文档时。错误修复也解决了一些长期存在的问题,提高了库的稳定性和可靠性。

回到顶部