golang高效生成Excel(XLSX)文件插件库goxlsxwriter的使用
golang高效生成Excel(XLSX)文件插件库goxlsxwriter的使用
goxlsxwriter是一个提供Go语言绑定的库,用于操作libxlsxwriter C库来高效生成Excel(XLSX)文件。
安装
使用goxlsxwriter前需要先安装libxlsxwriter库。从源码安装步骤如下:
$ git clone https://github.com/jmcnamara/libxlsxwriter.git
$ cd libxlsxwriter
$ make
$ make install
示例代码
下面是一个完整的示例,展示如何使用goxlsxwriter创建Excel文件并添加内容和格式:
package main
import (
"github.com/fterrag/goxlsxwriter"
)
func main() {
// 创建一个新的工作簿,文件名为example.xlsx
workbook := goxlsxwriter.NewWorkbook("example.xlsx", nil)
// 添加一个工作表,命名为"Sheet 1"
worksheet := goxlsxwriter.NewWorksheet(workbook, "Sheet 1")
// 创建一个新的格式对象
format := goxlsxwriter.NewFormat(workbook)
// 设置格式属性
format.SetFontName("Verdana") // 设置字体
format.SetFontSize(8) // 设置字体大小
format.SetFontColor(0x008000) // 设置字体颜色(绿色)
// 在A1单元格写入字符串并应用格式
worksheet.WriteString(0, 0, "Hello from A1!", format)
// 在B5单元格写入字符串(不使用格式)
worksheet.WriteString(4, 1, "This cell is B5", nil)
// 设置图片插入选项
options := &goxlsxwriter.ImageOptions{
XScale: 0.5, // X轴缩放比例
YScale: 0.5, // Y轴缩放比例
}
// 在D2单元格插入图片
worksheet.InsertImage(1, 3, "resources/gopher.png", options)
// 关闭工作簿(保存文件)
workbook.Close()
}
功能说明
- 创建工作簿和工作表
- 设置单元格格式(字体、大小、颜色等)
- 写入字符串内容
- 插入图片并设置缩放比例
待完成事项
- 增加测试覆盖率
- 完善文档
- 扩展libxlsxwriter API的覆盖范围
贡献指南
欢迎通过以下方式参与贡献:
- 提交PR(包含测试和文档)
- 添加或改进文档
- 报告问题
- 建议新功能或改进
这个库提供了简单易用的接口来生成Excel文件,适合需要高效生成XLSX格式报表的Go语言项目。
更多关于golang高效生成Excel(XLSX)文件插件库goxlsxwriter的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang高效生成Excel(XLSX)文件插件库goxlsxwriter的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用goxlsxwriter高效生成Excel(XLSX)文件
goxlsxwriter是Go语言中一个高效生成Excel(XLSX)文件的库,它是libxlsxwriter的Go绑定。相比其他Excel库,goxlsxwriter具有以下优势:
- 高性能:直接写入XLSX格式,内存占用低
- 功能丰富:支持公式、图表、格式设置等
- 纯Go实现:无需依赖外部程序或Excel软件
安装
go get github.com/fterrag/goxlsxwriter
基本用法
1. 创建简单Excel文件
package main
import (
"github.com/fterrag/goxlsxwriter"
)
func main() {
// 创建工作簿
workbook := goxlsxwriter.NewWorkbook("simple.xlsx")
defer workbook.Close()
// 创建工作表
worksheet := workbook.AddWorksheet("Sheet1")
// 写入数据
worksheet.WriteString(0, 0, "姓名") // A1
worksheet.WriteString(0, 1, "年龄") // B1
worksheet.WriteString(1, 0, "张三") // A2
worksheet.WriteNumber(1, 1, 28) // B2
worksheet.WriteString(2, 0, "李四") // A3
worksheet.WriteNumber(2, 1, 32) // B3
// 保存文件
workbook.Close()
}
2. 设置单元格格式
package main
import (
"github.com/fterrag/goxlsxwriter"
)
func main() {
workbook := goxlsxwriter.NewWorkbook("formatting.xlsx")
defer workbook.Close()
worksheet := workbook.AddWorksheet("Sheet1")
// 创建格式对象
headerFormat := workbook.AddFormat()
headerFormat.SetBold()
headerFormat.SetBgColor(goxlsxwriter.ColorYellow)
headerFormat.SetAlign("center")
// 写入带格式的标题
worksheet.WriteStringWithFormat(0, 0, "产品", headerFormat)
worksheet.WriteStringWithFormat(0, 1, "销量", headerFormat)
// 写入数据
worksheet.WriteString(1, 0, "手机")
worksheet.WriteNumber(1, 1, 1200)
worksheet.WriteString(2, 0, "笔记本")
worksheet.WriteNumber(2, 1, 850)
worksheet.WriteString(3, 0, "平板")
worksheet.WriteNumber(3, 1, 620)
// 设置列宽
worksheet.SetColumn(0, 0, 15) // A列宽度15
worksheet.SetColumn(1, 1, 10) // B列宽度10
workbook.Close()
}
3. 使用公式和图表
package main
import (
"github.com/fterrag/goxlsxwriter"
)
func main() {
workbook := goxlsxwriter.NewWorkbook("formula_chart.xlsx")
defer workbook.Close()
worksheet := workbook.AddWorksheet("数据")
// 写入销售数据
worksheet.WriteString(0, 0, "月份")
worksheet.WriteString(0, 1, "销售额")
months := []string{"1月", "2月", "3月", "4月", "5月", "6月"}
sales := []float64{42000, 48000, 56000, 52000, 61000, 69000}
for i, month := range months {
worksheet.WriteString(i+1, 0, month)
worksheet.WriteNumber(i+1, 1, sales[i])
}
// 添加求和公式
worksheet.WriteString(len(months)+1, 0, "总计")
worksheet.WriteFormula(len(months)+1, 1, "SUM(B2:B7)")
// 创建图表工作表
chartSheet := workbook.AddWorksheet("图表")
// 创建柱状图
chart := workbook.AddChart(goxlsxwriter.ChartTypeColumn)
chart.SetTitle("上半年销售趋势")
chart.SetXAxis("月份")
chart.SetYAxis("销售额")
// 添加数据系列
chart.AddSeries(
"=数据!$A$2:$A$7", // 类别范围(月份)
"=数据!$B$2:$B$7", // 值范围(销售额)
)
// 将图表插入到工作表
chartSheet.InsertChart(1, 1, chart)
workbook.Close()
}
高级功能
1. 合并单元格
worksheet.MergeRange(0, 0, 0, 3, "2023年销售报表", headerFormat)
2. 条件格式
// 创建红色格式
redFormat := workbook.AddFormat()
redFormat.SetBgColor(goxlsxwriter.ColorRed)
// 添加条件格式:小于50000标红
worksheet.ConditionalFormatting(
"B2:B7", // 应用范围
goxlsxwriter.ConditionTypeCell,
goxlsxwriter.ConditionOperatorLessThan,
"50000",
"", // 停止条件
redFormat,
)
3. 冻结窗格
worksheet.FreezePanes(1, 0) // 冻结第一行
性能优化建议
- 批量写入:尽量减少单个单元格的写入操作,可以预先组织数据后批量写入
- 复用格式:创建格式对象后可以重复使用,避免频繁创建
- 关闭资源:确保在完成后调用
workbook.Close()
- 内存管理:对于超大文件,考虑分批写入
goxlsxwriter是生成Excel文件的强大工具,特别适合需要高性能和丰富格式要求的场景。相比其他Go语言的Excel库,它在处理大型文件时表现更优。