From d840d3eba4b57be68b4e1d13c351e808088d5972 Mon Sep 17 00:00:00 2001 From: jacs Date: Sun, 22 Dec 2024 10:37:58 -0500 Subject: [PATCH] add sample xlsx --- controllers/pdfsample.go | 65 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/controllers/pdfsample.go b/controllers/pdfsample.go index e1eca71..29a449e 100644 --- a/controllers/pdfsample.go +++ b/controllers/pdfsample.go @@ -11,8 +11,12 @@ import ( "time" "git.smarteching.com/goffee/core" + // for graphs "git.smarteching.com/zeni/go-chart/v2" + // for PDF "github.com/jung-kurt/gofpdf" + // for xslx + "github.com/xuri/excelize/v2" ) // sample buffer back, pdf @@ -103,10 +107,69 @@ func Themepdf(c *core.Context) *core.Response { } - return c.Response.BufferPDF("elreport.pdf", b) + return c.Response.BufferFile("elreport.pdf", "application/pdf", b) } +func Themexslx(c *core.Context) *core.Response { + + var b bytes.Buffer + + f := excelize.NewFile() + + defer func() { + if err := f.Close(); err != nil { + fmt.Println(err) + } + }() + + for idx, row := range [][]interface{}{ + {nil, "Cerveza", "Vodka", "Ron"}, {"Small", 2, 3, 3}, + {"Normal", 5, 2, 4}, {"Large", 6, 7, 8}, + } { + cell, err := excelize.CoordinatesToCellName(1, idx+1) + if err != nil { + fmt.Println(err) + } + f.SetSheetRow("Sheet1", cell, &row) + } + + if err := f.AddChart("Sheet1", "E1", &excelize.Chart{ + Type: excelize.Pie, + Series: []excelize.ChartSeries{ + { + Name: "Totales", + Categories: "Sheet1!$B$1:$D$1", + Values: "Sheet1!$B$2:$D$2", + }, + }, + Format: excelize.GraphicOptions{ + OffsetX: 15, + OffsetY: 10, + }, + Title: []excelize.RichTextRun{ + { + Text: "Fruit Pie Chart", + }, + }, + PlotArea: excelize.ChartPlotArea{ + ShowPercent: true, + }, + }); err != nil { + fmt.Println(err) + } + + buf, err := f.WriteToBuffer() + if err != nil { + fmt.Fprint(buf, err.Error()) + } + + // Get byte array + b.ReadFrom(buf) + + return c.Response.BufferFile("elreport.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", b) +} + func getContents() [][]string { return [][]string{ {"node1", "Swamp"},