Golang中如何创建报告

Golang中如何创建报告 如何在 Go 语言中创建 PDF 格式的报告。

2 回复

对于PDF,可以尝试这个:

GitHub GitHub

jung-kurt/gofpdf

jung-kurt/gofpdf

一个PDF文档生成器,对文本、绘图和图像提供高级支持 - jung-kurt/gofpdf

或者看看另一个相关的库

GitHub GitHub

avelino/awesome-go

avelino/awesome-go

一个精心策划的Go框架、库和软件列表 - avelino/awesome-go

更多关于Golang中如何创建报告的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中创建PDF报告可以使用第三方库,推荐使用gofpdfpdfcpu。以下是使用gofpdf创建简单PDF报告的示例代码:

package main

import (
    "github.com/jung-kurt/gofpdf"
)

func main() {
    pdf := gofpdf.New("P", "mm", "A4", "")
    pdf.AddPage()
    pdf.SetFont("Arial", "B", 16)
    pdf.Cell(40, 10, "业务报告")
    pdf.Ln(20)
    pdf.SetFont("Arial", "", 12)
    pdf.Cell(40, 10, "报告日期: 2024-01-15")
    pdf.Ln(10)
    pdf.Cell(40, 10, "销售额: $15,000")
    pdf.Ln(10)
    pdf.Cell(40, 10, "增长率: 12.5%")
    
    err := pdf.OutputFileAndClose("report.pdf")
    if err != nil {
        panic(err)
    }
}

需要先安装依赖:

go get github.com/jung-kurt/gofpdf

如果需要更复杂的表格和数据可视化,可以结合gonum/plot库生成图表:

package main

import (
    "github.com/jung-kurt/gofpdf"
    "gonum.org/v1/plot"
    "gonum.org/v1/plot/plotter"
    "gonum.org/v1/plot/vg"
    "gonum.org/v1/plot/vg/draw"
    "image/color"
    "os"
)

func createChart() string {
    p := plot.New()
    p.Title.Text = "销售趋势"
    p.X.Label.Text = "月份"
    p.Y.Label.Text = "销售额"

    points := plotter.XYs{
        {1, 1000}, {2, 1500}, {3, 1300},
        {4, 1800}, {5, 2200}, {6, 2500},
    }

    line, err := plotter.NewLine(points)
    if err != nil {
        panic(err)
    }
    line.Color = color.RGBA{R: 255, A: 255}

    p.Add(line)
    
    // 保存图表为临时文件
    tempFile := "chart.png"
    if err := p.Save(10*vg.Centimeter, 10*vg.Centimeter, tempFile); err != nil {
        panic(err)
    }
    return tempFile
}

func main() {
    // 创建图表
    chartFile := createChart()
    defer os.Remove(chartFile)

    // 创建PDF报告
    pdf := gofpdf.New("P", "mm", "A4", "")
    pdf.AddPage()
    
    // 添加标题
    pdf.SetFont("Arial", "B", 24)
    pdf.Cell(0, 20, "月度业务报告")
    pdf.Ln(25)
    
    // 添加摘要部分
    pdf.SetFont("Arial", "", 14)
    pdf.Cell(0, 10, "业绩摘要")
    pdf.Ln(15)
    
    pdf.SetFont("Arial", "", 12)
    pdf.Cell(0, 10, "总销售额: $12,300")
    pdf.Ln(8)
    pdf.Cell(0, 10, "同比增长: 15.2%")
    pdf.Ln(8)
    pdf.Cell(0, 10, "客户增长率: 8.7%")
    pdf.Ln(20)
    
    // 插入图表
    pdf.Cell(0, 10, "销售趋势图:")
    pdf.Ln(10)
    pdf.Image(chartFile, 10, 100, 180, 0, false, "", 0, "")
    
    // 添加表格数据
    pdf.Ln(85)
    pdf.Cell(0, 10, "详细数据:")
    pdf.Ln(10)
    
    // 创建简单表格
    headers := []string{"月份", "销售额", "增长率"}
    data := [][]string{
        {"1月", "$1,000", "5%"},
        {"2月", "$1,500", "10%"},
        {"3月", "$1,300", "-2%"},
        {"4月", "$1,800", "12%"},
    }
    
    pdf.SetFont("Arial", "B", 12)
    for _, header := range headers {
        pdf.CellFormat(40, 10, header, "1", 0, "C", false, 0, "")
    }
    pdf.Ln(10)
    
    pdf.SetFont("Arial", "", 12)
    for _, row := range data {
        for _, cell := range row {
            pdf.CellFormat(40, 10, cell, "1", 0, "C", false, 0, "")
        }
        pdf.Ln(10)
    }
    
    // 保存PDF
    err := pdf.OutputFileAndClose("business_report.pdf")
    if err != nil {
        panic(err)
    }
}

安装图表库依赖:

go get gonum.org/v1/plot

对于企业级报告生成,可以使用go-report库:

package main

import (
    "github.com/johnfercher/go-report"
    "time"
)

func main() {
    builder := report.NewBuilder("月度报告").
        AddParagraph("本报告展示公司本月业务表现").
        AddHeader("关键指标", 2).
        AddUnorderedList([]string{
            "销售额增长15%",
            "新客户增加23家",
            "客户满意度92%",
        }).
        AddHeader("详细分析", 2).
        AddParagraph("各项业务指标均达到预期目标...").
        SetAuthor("财务部").
        SetCreationDate(time.Now())

    doc := builder.Build()
    
    err := doc.GeneratePdf("monthly_report.pdf")
    if err != nil {
        panic(err)
    }
}

这些示例展示了在Go中创建PDF报告的基本方法,包括文本、图表和表格的生成。

回到顶部