forked from unidoc/unioffice
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
55 lines (43 loc) · 1.3 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright 2017 Baliance. All rights reserved.
package main
import (
"log"
"baliance.com/gooxml/spreadsheet"
)
func main() {
ss := spreadsheet.New()
sheet := ss.AddSheet()
dwng := ss.AddDrawing()
chart, anc := dwng.AddChart(spreadsheet.AnchorTypeTwoCell)
anc.MoveTo(0, 0)
anc.SetWidth(10)
// No cell data needed, we can supply data directly to the chart
lc := chart.AddLineChart()
priceSeries := lc.AddSeries()
priceSeries.SetText("Price")
priceSeries.CategoryAxis().SetValues([]string{"Prod 1", "Prod 2", "Prod 3", "Prod 4", "Prod 5"})
priceSeries.Values().SetValues([]float64{5, 4, 3, 9, 2})
soldSeries := lc.AddSeries()
soldSeries.SetText("Sold")
soldSeries.Values().SetValues([]float64{1, 2, 3, 4, 5})
totalSeries := lc.AddSeries()
totalSeries.SetText("Total")
totalSeries.Values().SetValues([]float64{9, 2, 1, 8, 1})
// the line chart accepts up to two axes
ca := chart.AddCategoryAxis()
va := chart.AddValueAxis()
lc.AddAxis(ca)
lc.AddAxis(va)
ca.SetCrosses(va)
va.SetCrosses(ca)
// add a title and legend
title := chart.AddTitle()
title.SetText("Items Sold")
chart.AddLegend()
// and finally add the chart to the sheet
sheet.SetDrawing(dwng)
if err := ss.Validate(); err != nil {
log.Fatalf("error validating sheet: %s", err)
}
ss.SaveToFile("line-chart-no-data.xlsx")
}