Specified combo chart as variadic parameters
This commit is contained in:
parent
9ddb52eac4
commit
fa7078f06c
40
chart.go
40
chart.go
|
@ -696,7 +696,7 @@ func parseFormatChartSet(formatSet string) (*formatChart, error) {
|
||||||
//
|
//
|
||||||
// Set chart size by dimension property. The dimension property is optional. The default width is 480, and height is 290.
|
// Set chart size by dimension property. The dimension property is optional. The default width is 480, and height is 290.
|
||||||
//
|
//
|
||||||
// combo: Specifies tha create a chart that combines two art types in a single
|
// combo: Specifies the create a chart that combines two art types in a single
|
||||||
// chart. For example, create a clustered column - line chart with data
|
// chart. For example, create a clustered column - line chart with data
|
||||||
// Sheet1!$E$1:$L$15:
|
// Sheet1!$E$1:$L$15:
|
||||||
//
|
//
|
||||||
|
@ -714,7 +714,7 @@ func parseFormatChartSet(formatSet string) (*formatChart, error) {
|
||||||
// for k, v := range values {
|
// for k, v := range values {
|
||||||
// f.SetCellValue("Sheet1", k, v)
|
// f.SetCellValue("Sheet1", k, v)
|
||||||
// }
|
// }
|
||||||
// if err := f.AddChart("Sheet1", "E1", `{"type":"col","series":[{"name":"Sheet1!$A$2","categories":"","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Clustered Column - Line Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"combo":{"type":"line","series":[{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}}`); err != nil {
|
// if err := f.AddChart("Sheet1", "E1", `{"type":"col","series":[{"name":"Sheet1!$A$2","categories":"","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Clustered Column - Line Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}`, `{"type":"line","series":[{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}`); err != nil {
|
||||||
// println(err.Error())
|
// println(err.Error())
|
||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
|
@ -724,11 +724,22 @@ func parseFormatChartSet(formatSet string) (*formatChart, error) {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
func (f *File) AddChart(sheet, cell, format string) error {
|
func (f *File) AddChart(sheet, cell, format string, combo ...string) error {
|
||||||
formatSet, err := parseFormatChartSet(format)
|
formatSet, err := parseFormatChartSet(format)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
comboCharts := []*formatChart{}
|
||||||
|
for _, comboFormat := range combo {
|
||||||
|
comboChart, err := parseFormatChartSet(comboFormat)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, ok := chartValAxNumFmtFormatCode[comboChart.Type]; !ok {
|
||||||
|
return errors.New("unsupported chart type " + comboChart.Type)
|
||||||
|
}
|
||||||
|
comboCharts = append(comboCharts, comboChart)
|
||||||
|
}
|
||||||
// Read sheet data.
|
// Read sheet data.
|
||||||
xlsx, err := f.workSheetReader(sheet)
|
xlsx, err := f.workSheetReader(sheet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -748,7 +759,7 @@ func (f *File) AddChart(sheet, cell, format string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
f.addChart(formatSet)
|
f.addChart(formatSet, comboCharts)
|
||||||
f.addContentTypePart(chartID, "chart")
|
f.addContentTypePart(chartID, "chart")
|
||||||
f.addContentTypePart(drawingID, "drawings")
|
f.addContentTypePart(drawingID, "drawings")
|
||||||
return err
|
return err
|
||||||
|
@ -786,7 +797,7 @@ func (f *File) prepareDrawing(xlsx *xlsxWorksheet, drawingID int, sheet, drawing
|
||||||
|
|
||||||
// addChart provides a function to create chart as xl/charts/chart%d.xml by
|
// addChart provides a function to create chart as xl/charts/chart%d.xml by
|
||||||
// given format sets.
|
// given format sets.
|
||||||
func (f *File) addChart(formatSet *formatChart) {
|
func (f *File) addChart(formatSet *formatChart, comboCharts []*formatChart) {
|
||||||
count := f.countCharts()
|
count := f.countCharts()
|
||||||
xlsxChartSpace := xlsxChartSpace{
|
xlsxChartSpace := xlsxChartSpace{
|
||||||
XMLNSc: NameSpaceDrawingMLChart,
|
XMLNSc: NameSpaceDrawingMLChart,
|
||||||
|
@ -980,8 +991,11 @@ func (f *File) addChart(formatSet *formatChart) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addChart(xlsxChartSpace.Chart.PlotArea, plotAreaFunc[formatSet.Type](formatSet))
|
addChart(xlsxChartSpace.Chart.PlotArea, plotAreaFunc[formatSet.Type](formatSet))
|
||||||
if formatSet.Combo != nil {
|
order := len(formatSet.Series)
|
||||||
addChart(xlsxChartSpace.Chart.PlotArea, plotAreaFunc[formatSet.Combo.Type](formatSet.Combo))
|
for idx := range comboCharts {
|
||||||
|
comboCharts[idx].order = order
|
||||||
|
addChart(xlsxChartSpace.Chart.PlotArea, plotAreaFunc[comboCharts[idx].Type](comboCharts[idx]))
|
||||||
|
order += len(comboCharts[idx].Series)
|
||||||
}
|
}
|
||||||
chart, _ := xml.Marshal(xlsxChartSpace)
|
chart, _ := xml.Marshal(xlsxChartSpace)
|
||||||
media := "xl/charts/chart" + strconv.Itoa(count+1) + ".xml"
|
media := "xl/charts/chart" + strconv.Itoa(count+1) + ".xml"
|
||||||
|
@ -1462,15 +1476,11 @@ func (f *File) drawChartShape(formatSet *formatChart) *attrValString {
|
||||||
// drawChartSeries provides a function to draw the c:ser element by given
|
// drawChartSeries provides a function to draw the c:ser element by given
|
||||||
// format sets.
|
// format sets.
|
||||||
func (f *File) drawChartSeries(formatSet *formatChart) *[]cSer {
|
func (f *File) drawChartSeries(formatSet *formatChart) *[]cSer {
|
||||||
var baseIdx int
|
|
||||||
if formatSet.Combo != nil {
|
|
||||||
baseIdx = len(formatSet.Combo.Series)
|
|
||||||
}
|
|
||||||
ser := []cSer{}
|
ser := []cSer{}
|
||||||
for k := range formatSet.Series {
|
for k := range formatSet.Series {
|
||||||
ser = append(ser, cSer{
|
ser = append(ser, cSer{
|
||||||
IDx: &attrValInt{Val: intPtr(k + baseIdx)},
|
IDx: &attrValInt{Val: intPtr(k + formatSet.order)},
|
||||||
Order: &attrValInt{Val: intPtr(k + baseIdx)},
|
Order: &attrValInt{Val: intPtr(k + formatSet.order)},
|
||||||
Tx: &cTx{
|
Tx: &cTx{
|
||||||
StrRef: &cStrRef{
|
StrRef: &cStrRef{
|
||||||
F: formatSet.Series[k].Name,
|
F: formatSet.Series[k].Name,
|
||||||
|
@ -1506,9 +1516,9 @@ func (f *File) drawChartSeriesSpPr(i int, formatSet *formatChart) *cSpPr {
|
||||||
Cap: "rnd", // rnd, sq, flat
|
Cap: "rnd", // rnd, sq, flat
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if i < 6 {
|
if i+formatSet.order < 6 {
|
||||||
spPrLine.Ln.SolidFill = &aSolidFill{
|
spPrLine.Ln.SolidFill = &aSolidFill{
|
||||||
SchemeClr: &aSchemeClr{Val: "accent" + strconv.Itoa(i+1)},
|
SchemeClr: &aSchemeClr{Val: "accent" + strconv.Itoa(i+formatSet.order+1)},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
chartSeriesSpPr := map[string]*cSpPr{Line: spPrLine, Scatter: spPrScatter}
|
chartSeriesSpPr := map[string]*cSpPr{Line: spPrLine, Scatter: spPrScatter}
|
||||||
|
|
|
@ -186,7 +186,7 @@ func TestAddChart(t *testing.T) {
|
||||||
"Y1": {"doughnut", "Clustered Column - Doughnut Chart"},
|
"Y1": {"doughnut", "Clustered Column - Doughnut Chart"},
|
||||||
}
|
}
|
||||||
for axis, props := range clusteredColumnCombo {
|
for axis, props := range clusteredColumnCombo {
|
||||||
assert.NoError(t, f.AddChart("Combo Charts", axis, fmt.Sprintf(`{"type":"col","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$30:$D$30"},{"name":"Sheet1!$A$31","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$31:$D$31"},{"name":"Sheet1!$A$32","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$32:$D$32"},{"name":"Sheet1!$A$33","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$33:$D$33"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"%s"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"combo":{"type":"%s","series":[{"name":"Sheet1!$A$34","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$34:$D$34"},{"name":"Sheet1!$A$35","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$35:$D$35"},{"name":"Sheet1!$A$36","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$36:$D$36"},{"name":"Sheet1!$A$37","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$37:$D$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}}`, props[1], props[0])))
|
assert.NoError(t, f.AddChart("Combo Charts", axis, fmt.Sprintf(`{"type":"col","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$30:$D$30"},{"name":"Sheet1!$A$31","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$31:$D$31"},{"name":"Sheet1!$A$32","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$32:$D$32"},{"name":"Sheet1!$A$33","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$33:$D$33"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"%s"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}`, props[1]), fmt.Sprintf(`{"type":"%s","series":[{"name":"Sheet1!$A$34","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$34:$D$34"},{"name":"Sheet1!$A$35","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$35:$D$35"},{"name":"Sheet1!$A$36","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$36:$D$36"},{"name":"Sheet1!$A$37","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$37:$D$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}`, props[0])))
|
||||||
}
|
}
|
||||||
stackedAreaCombo := map[string][]string{
|
stackedAreaCombo := map[string][]string{
|
||||||
"A16": {"line", "Stacked Area - Line Chart"},
|
"A16": {"line", "Stacked Area - Line Chart"},
|
||||||
|
@ -195,9 +195,10 @@ func TestAddChart(t *testing.T) {
|
||||||
"Y16": {"doughnut", "Stacked Area - Doughnut Chart"},
|
"Y16": {"doughnut", "Stacked Area - Doughnut Chart"},
|
||||||
}
|
}
|
||||||
for axis, props := range stackedAreaCombo {
|
for axis, props := range stackedAreaCombo {
|
||||||
assert.NoError(t, f.AddChart("Combo Charts", axis, fmt.Sprintf(`{"type":"areaStacked","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$30:$D$30"},{"name":"Sheet1!$A$31","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$31:$D$31"},{"name":"Sheet1!$A$32","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$32:$D$32"},{"name":"Sheet1!$A$33","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$33:$D$33"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"%s"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"combo":{"type":"%s","series":[{"name":"Sheet1!$A$34","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$34:$D$34"},{"name":"Sheet1!$A$35","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$35:$D$35"},{"name":"Sheet1!$A$36","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$36:$D$36"},{"name":"Sheet1!$A$37","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$37:$D$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}}`, props[1], props[0])))
|
assert.NoError(t, f.AddChart("Combo Charts", axis, fmt.Sprintf(`{"type":"areaStacked","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$30:$D$30"},{"name":"Sheet1!$A$31","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$31:$D$31"},{"name":"Sheet1!$A$32","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$32:$D$32"},{"name":"Sheet1!$A$33","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$33:$D$33"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"%s"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}`, props[1]), fmt.Sprintf(`{"type":"%s","series":[{"name":"Sheet1!$A$34","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$34:$D$34"},{"name":"Sheet1!$A$35","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$35:$D$35"},{"name":"Sheet1!$A$36","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$36:$D$36"},{"name":"Sheet1!$A$37","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$37:$D$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true}}`, props[0])))
|
||||||
}
|
}
|
||||||
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestAddChart.xlsx")))
|
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestAddChart.xlsx")))
|
||||||
// Test with unsupported chart type
|
// Test with unsupported chart type
|
||||||
assert.EqualError(t, f.AddChart("Sheet2", "BD32", `{"type":"unknown","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$30:$D$30"},{"name":"Sheet1!$A$31","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$31:$D$31"},{"name":"Sheet1!$A$32","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$32:$D$32"},{"name":"Sheet1!$A$33","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$33:$D$33"},{"name":"Sheet1!$A$34","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$34:$D$34"},{"name":"Sheet1!$A$35","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$35:$D$35"},{"name":"Sheet1!$A$36","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$36:$D$36"},{"name":"Sheet1!$A$37","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$37:$D$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Bubble 3D Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`), "unsupported chart type unknown")
|
assert.EqualError(t, f.AddChart("Sheet2", "BD32", `{"type":"unknown","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$30:$D$30"},{"name":"Sheet1!$A$31","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$31:$D$31"},{"name":"Sheet1!$A$32","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$32:$D$32"},{"name":"Sheet1!$A$33","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$33:$D$33"},{"name":"Sheet1!$A$34","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$34:$D$34"},{"name":"Sheet1!$A$35","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$35:$D$35"},{"name":"Sheet1!$A$36","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$36:$D$36"},{"name":"Sheet1!$A$37","categories":"Sheet1!$B$29:$D$29","values":"Sheet1!$B$37:$D$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Bubble 3D Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`), "unsupported chart type unknown")
|
||||||
|
assert.EqualError(t, f.AddChart("Sheet2", "BD64", `{"type":"barOfPie","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$A$30:$D$37","values":"Sheet1!$B$30:$B$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Bar of Pie Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero","x_axis":{"major_grid_lines":true},"y_axis":{"major_grid_lines":true}}`, `{"type":"unknown","series":[{"name":"Sheet1!$A$30","categories":"Sheet1!$A$30:$D$37","values":"Sheet1!$B$30:$B$37"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Bar of Pie Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero","x_axis":{"major_grid_lines":true},"y_axis":{"major_grid_lines":true}}`), "unsupported chart type unknown")
|
||||||
}
|
}
|
||||||
|
|
10
xmlChart.go
10
xmlChart.go
|
@ -593,11 +593,11 @@ type formatChart struct {
|
||||||
} `json:"fill"`
|
} `json:"fill"`
|
||||||
Layout formatLayout `json:"layout"`
|
Layout formatLayout `json:"layout"`
|
||||||
} `json:"plotarea"`
|
} `json:"plotarea"`
|
||||||
ShowBlanksAs string `json:"show_blanks_as"`
|
ShowBlanksAs string `json:"show_blanks_as"`
|
||||||
ShowHiddenData bool `json:"show_hidden_data"`
|
ShowHiddenData bool `json:"show_hidden_data"`
|
||||||
SetRotation int `json:"set_rotation"`
|
SetRotation int `json:"set_rotation"`
|
||||||
SetHoleSize int `json:"set_hole_size"`
|
SetHoleSize int `json:"set_hole_size"`
|
||||||
Combo *formatChart `json:"combo"`
|
order int
|
||||||
}
|
}
|
||||||
|
|
||||||
// formatChartLegend directly maps the format settings of the chart legend.
|
// formatChartLegend directly maps the format settings of the chart legend.
|
||||||
|
|
Loading…
Reference in New Issue