From 219aadeb7659ccee887e7d70c1711ee6dd50f35f Mon Sep 17 00:00:00 2001 From: Ri Xu Date: Sun, 23 Apr 2017 00:10:23 +0800 Subject: [PATCH] - Initialize char support, relate issue #31; - Doc for function `GetRows()` updated, relate issue #43; - Fix doc typo in `xmlContentTypes.go`; - Default template updated; - Readme updated; - go test updated --- README.md | 41 +- chart.go | 928 ++++++++++++++++++++++++++++++++++++++++++ excelize_test.go | 35 ++ file.go | 18 +- picture.go | 16 +- rows.go | 5 +- templates.go | 6 +- test/images/chart.png | Bin 0 -> 128272 bytes xmlChart.go | 634 +++++++++++++++++++++++++++++ xmlContentTypes.go | 2 +- xmlDrawing.go | 75 +++- 11 files changed, 1728 insertions(+), 32 deletions(-) create mode 100644 chart.go create mode 100644 test/images/chart.png create mode 100644 xmlChart.go diff --git a/README.md b/README.md index 6ac668e..3f71454 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ package main import ( "fmt" "os" + "strconv" "github.com/Luxurioust/excelize" ) @@ -76,8 +77,10 @@ func main() { // Get value from cell by given sheet index and axis. cell := xlsx.GetCellValue("Sheet1", "B2") fmt.Println(cell) + // Get sheet index. + index := xlsx.GetSheetIndex("Sheet2") // Get all the rows in a sheet. - rows := xlsx.GetRows("Sheet2") + rows := xlsx.GetRows("sheet" + strconv.Itoa(index)) for _, row := range rows { for _, colCell := range row { fmt.Print(colCell, "\t") @@ -87,6 +90,42 @@ func main() { } ``` +### Add chart to XLSX file + +With Excelize chart generation and management is as easy as a few lines of code. You can build charts based off data in your worksheet or generate charts without any data in your sheet at all. + +![Excelize](./test/images/chart.png "Excelize") + +``` +package main + +import ( + "fmt" + "os" + + "github.com/Luxurioust/excelize" +) + +func main() { + categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Large", "C1": "Apple", "D1": "Pear"} + values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8} + xlsx := excelize.CreateFile() + for k, v := range categories { + xlsx.SetCellValue("Sheet1", k, v) + } + for k, v := range values { + xlsx.SetCellValue("Sheet1", k, v) + } + xlsx.AddChart("Sheet1", "E1", `{"type":"bar3D","series":[{"name":"=Sheet1!$A$2","categories":"=Sheet1!$B$1:$D$1","values":"=Sheet1!$B$2:$D$2"},{"name":"=Sheet1!$A$2","categories":"=Sheet1!$B$1:$D$1","values":"=Sheet1!$B$3:$D$3"},{"name":"=Sheet1!$A$3","categories":"=Sheet1!$B$1:$D$1","values":"=Sheet1!$B$4:$D$4"}],"title":{"name":"Fruit 3D Line Chart"}}`) + // Save xlsx file by the given path. + err := xlsx.WriteTo("./Workbook.xlsx") + if err != nil { + fmt.Println(err) + os.Exit(1) + } +} +``` + ### Add picture to XLSX file ```go diff --git a/chart.go b/chart.go new file mode 100644 index 0000000..c5ef6b8 --- /dev/null +++ b/chart.go @@ -0,0 +1,928 @@ +package excelize + +import ( + "encoding/json" + "encoding/xml" + "fmt" + "strconv" + "strings" +) + +// This section defines the currently supported chart types. +const ( + Bar = "bar" + Bar3D = "bar3D" + Doughnut = "doughnut" + Line = "line" + Pie = "pie" + Pie3D = "pie3D" + Radar = "radar" + Scatter = "scatter" +) + +// This section defines the default value of chart properties. +var ( + chartView3DRotX = map[string]int{Bar: 0, Bar3D: 15, Doughnut: 0, Line: 0, Pie: 0, Pie3D: 30, Radar: 0, Scatter: 0} + chartView3DRotY = map[string]int{Bar: 0, Bar3D: 20, Doughnut: 0, Line: 0, Pie: 0, Pie3D: 0, Radar: 0, Scatter: 0} + chartView3DDepthPercent = map[string]int{Bar: 100, Bar3D: 100, Doughnut: 100, Line: 100, Pie: 100, Pie3D: 100, Radar: 100, Scatter: 100} + chartView3DRAngAx = map[string]int{Bar: 0, Bar3D: 1, Doughnut: 0, Line: 0, Pie: 0, Pie3D: 0, Radar: 0, Scatter: 0} + chartLegendPosition = map[string]string{"bottom": "b", "left": "l", "right": "r", "top": "t", "top_right": "tr"} +) + +// parseFormatChartSet provides function to parse the format settings of the +// chart with default value. +func parseFormatChartSet(formatSet string) *formatChart { + format := formatChart{ + Format: formatPicture{ + FPrintsWithSheet: true, + FLocksWithSheet: false, + NoChangeAspect: false, + OffsetX: 0, + OffsetY: 0, + XScale: 1.0, + YScale: 1.0, + }, + Legend: formatChartLegend{ + Position: "bottom", + ShowLegendKey: false, + }, + Title: formatChartTitle{ + Name: " ", + }, + ShowBlanksAs: "gap", + } + json.Unmarshal([]byte(formatSet), &format) + return &format +} + +// AddChart provides the method to add chart in a sheet by given chart format +// set (such as offset, scale, aspect ratio setting and print settings) and +// properties set. Only support "pie" and "3Dpie" type chart currently. For +// example, create 3D bar chart with data Sheet1!$A$29:$D$32: +// +// package main +// +// import ( +// "fmt" +// "os" +// +// "github.com/Luxurioust/excelize" +// ) +// +// func main() { +// xlsx := excelize.CreateFile() +// xlsx.SetCellValue("SHEET1", "A30", "Small") +// xlsx.SetCellValue("SHEET1", "A31", "Normal") +// xlsx.SetCellValue("SHEET1", "A32", "Large") +// xlsx.SetCellValue("SHEET1", "B29", "Apple") +// xlsx.SetCellValue("SHEET1", "C29", "Prange") +// xlsx.SetCellValue("SHEET1", "D29", "Pear") +// xlsx.SetCellValue("SHEET1", "B30", 2) +// xlsx.SetCellValue("SHEET1", "C30", 3) +// xlsx.SetCellValue("SHEET1", "D30", 3) +// xlsx.SetCellValue("SHEET1", "B31", 5) +// xlsx.SetCellValue("SHEET1", "C31", 2) +// xlsx.SetCellValue("SHEET1", "D31", 4) +// xlsx.SetCellValue("SHEET1", "B32", 6) +// xlsx.SetCellValue("SHEET1", "C32", 7) +// xlsx.SetCellValue("SHEET1", "D32", 8) +// xlsx.AddChart("SHEET1", "F2", `{"type":"bar3D","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"}],"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":"bottom","show_legend_key":false},"title":{"name":"Fruit 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},"show_blanks_as":"zero"}`) +// // Save xlsx file by the given path. +// err := xlsx.WriteTo("./tmp/Workbook.xlsx") +// if err != nil { +// fmt.Println(err) +// os.Exit(1) +// } +// } +// +// The following shows the type of chart supported by excelize: +// +// +---------------------------+ +// | Type | Chart | +// +==========+================+ +// | bar | bar chart | +// +----------+----------------+ +// | bar3D | 3D bar chart | +// +----------+----------------+ +// | doughnut | doughnut chart | +// +----------+----------------+ +// | line | line chart | +// +----------+----------------+ +// | pie | pie chart | +// +----------+----------------+ +// | pie3D | 3D pie chart | +// +----------+----------------+ +// | radar | radar chart | +// +----------+----------------+ +// | scatter | scatter chart | +// +----------+----------------+ +// +// In Excel a chart series is a collection of information that defines which data is plotted such as values, axis labels and formatting. +// +// The series options that can be set are: +// +// name +// categories +// values +// +// name: Set the name for the series. The name is displayed in the chart legend and in the formula bar. The name property is optional and if it isn't supplied it will default to Series 1..n. The name can also be a formula such as =Sheet1!$A$1 +// +// categories: This sets the chart category labels. The category is more or less the same as the X axis. In most chart types the categories property is optional and the chart will just assume a sequential series from 1..n. +// +// values: This is the most important property of a series and is the only mandatory option for every chart object. This option links the chart with the worksheet data that it displays. +// +// Set properties of the chart legend. The options that can be set are: +// +// position +// show_legend_key +// +// position: Set the position of the chart legend. The default legend position is right. The available positions are: +// +// top +// bottom +// left +// right +// top_right +// +// show_legend_key: Set the legend keys shall be shown in data labels. The default value is false. +// +// Set properties of the chart title. The properties that can be set are: +// +// title +// +// name: Set the name (title) for the chart. The name is displayed above the chart. The name can also be a formula such as =Sheet1!$A$1 or a list with a sheetname. The name property is optional. The default is to have no chart title. +// +// Specifies how blank cells are plotted on the chart by show_blanks_as. The default value is gap. The options that can be set are: +// +// gap +// span +// zero +// +// gap: Specifies that blank values shall be left as a gap. +// +// sapn: Specifies that blank values shall be spanned with a line. +// +// zero: Specifies that blank values shall be treated as zero. +// +// Set chart offset, scale, aspect ratio setting and print settings by format, same as function AddPicture. +// +// Set the position of the chart plot area by plotarea. The properties that can be set are: +// +// show_bubble_size +// show_cat_name +// show_leader_lines +// show_percent +// show_series_name +// show_val +// +// show_bubble_size: Specifies the bubble size shall be shown in a data label. The show_bubble_size property is optional. The default value is false. +// show_cat_name: Specifies that the category name shall be shown in the data label. The show_cat_name property is optional. The default value is true. +// show_leader_lines: Specifies leader lines shall be shown for data labels. The show_leader_lines property is optional. The default value is false. +// show_percent: Specifies that the percentage shall be shown in a data label. The show_percent property is optional. The default value is false. +// show_series_name: Specifies that the series name shall be shown in a data label. The show_series_name property is optional. The default value is false. +// show_val: Specifies that the value shall be shown in a data label. The show_val property is optional. The default value is false. +// +func (f *File) AddChart(sheet, cell, format string) { + formatSet := parseFormatChartSet(format) + // Read sheet data. + xlsx := f.workSheetReader(sheet) + // Add first picture for given sheet, create xl/drawings/ and xl/drawings/_rels/ folder. + drawingID := f.countDrawings() + 1 + chartID := f.countCharts() + 1 + drawingXML := "xl/drawings/drawing" + strconv.Itoa(drawingID) + ".xml" + sheetRelationshipsDrawingXML := "../drawings/drawing" + strconv.Itoa(drawingID) + ".xml" + + var drawingRID int + if xlsx.Drawing != nil { + // The worksheet already has a picture or chart relationships, use the relationships drawing ../drawings/drawing%d.xml. + sheetRelationshipsDrawingXML = f.getSheetRelationshipsTargetByID(sheet, xlsx.Drawing.RID) + drawingID, _ = strconv.Atoi(strings.TrimSuffix(strings.TrimPrefix(sheetRelationshipsDrawingXML, "../drawings/drawing"), ".xml")) + drawingXML = strings.Replace(sheetRelationshipsDrawingXML, "..", "xl", -1) + } else { + // Add first picture for given sheet. + rID := f.addSheetRelationships(sheet, SourceRelationshipDrawingML, sheetRelationshipsDrawingXML, "") + f.addSheetDrawing(sheet, rID) + } + drawingRID = f.addDrawingRelationships(drawingID, SourceRelationshipChart, "../charts/chart"+strconv.Itoa(chartID)+".xml") + f.addDrawingChart(sheet, drawingXML, cell, 480, 290, drawingRID, &formatSet.Format) + f.addChart(formatSet) + f.addChartContentTypePart(chartID) + f.addDrawingContentTypePart(drawingID) +} + +// countCharts provides function to get chart files count storage in the +// folder xl/charts. +func (f *File) countCharts() int { + count := 0 + for k := range f.XLSX { + if strings.Contains(k, "xl/charts/chart") { + count++ + } + } + return count +} + +// addChartContentTypePart provides function to add chart part relationships in +// the file [Content_Types].xml by given chart index. +func (f *File) addChartContentTypePart(index int) { + content := f.contentTypesReader() + for _, v := range content.Overrides { + if v.PartName == "/xl/charts/chart"+strconv.Itoa(index)+".xml" { + return + } + } + content.Overrides = append(content.Overrides, xlsxOverride{ + PartName: "/xl/charts/chart" + strconv.Itoa(index) + ".xml", + ContentType: "application/vnd.openxmlformats-officedocument.drawingml.chart+xml", + }) +} + +// addChart provides function to create chart as xl/charts/chart%d.xml by given +// format sets. +func (f *File) addChart(formatSet *formatChart) { + count := f.countCharts() + xlsxChartSpace := xlsxChartSpace{ + ChartSpace: cChartSpace{ + XMLNSc: NameSpaceDrawingMLChart, + XMLNSa: NameSpaceDrawingML, + XMLNSr: SourceRelationship, + XMLNSc16r2: SourceRelationshipChart201506, + Date1904: &attrValBool{Val: false}, + Lang: &attrValString{Val: "en-US"}, + RoundedCorners: &attrValBool{Val: false}, + Chart: cChart{ + Title: &cTitle{ + Tx: cTx{ + Rich: &cRich{ + P: aP{ + PPr: aPPr{ + DefRPr: aDefRPr{ + Kern: 1200, + Strike: "noStrike", + U: "none", + Sz: 1400, + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{ + Val: "tx1", + LumMod: &attrValInt{ + Val: 65000, + }, + LumOff: &attrValInt{ + Val: 35000, + }, + }, + }, + Ea: &aEa{ + Typeface: "+mn-ea", + }, + Cs: &aCs{ + Typeface: "+mn-cs", + }, + Latin: &aLatin{ + Typeface: "+mn-lt", + }, + }, + }, + R: &aR{ + RPr: aRPr{ + Lang: "en-US", + AltLang: "en-US", + }, + T: formatSet.Title.Name, + }, + }, + }, + }, + TxPr: cTxPr{ + P: aP{ + PPr: aPPr{ + DefRPr: aDefRPr{ + Kern: 1200, + U: "none", + Sz: 14000, + Strike: "noStrike", + }, + }, + EndParaRPr: &aEndParaRPr{ + Lang: "en-US", + }, + }, + }, + }, + View3D: &cView3D{ + RotX: &attrValInt{Val: chartView3DRotX[formatSet.Type]}, + RotY: &attrValInt{Val: chartView3DRotY[formatSet.Type]}, + DepthPercent: &attrValInt{Val: chartView3DDepthPercent[formatSet.Type]}, + RAngAx: &attrValInt{Val: chartView3DRAngAx[formatSet.Type]}, + }, + Floor: &cThicknessSpPr{ + Thickness: &attrValInt{Val: 0}, + }, + SideWall: &cThicknessSpPr{ + Thickness: &attrValInt{Val: 0}, + }, + BackWall: &cThicknessSpPr{ + Thickness: &attrValInt{Val: 0}, + }, + PlotArea: &cPlotArea{}, + Legend: &cLegend{ + LegendPos: &attrValString{Val: chartLegendPosition[formatSet.Legend.Position]}, + Overlay: &attrValBool{Val: false}, + }, + + PlotVisOnly: &attrValBool{Val: false}, + DispBlanksAs: &attrValString{Val: formatSet.ShowBlanksAs}, + ShowDLblsOverMax: &attrValBool{Val: false}, + }, + SpPr: &cSpPr{ + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{Val: "bg1"}, + }, + Ln: &aLn{ + W: 9525, + Cap: "flat", + Cmpd: "sng", + Algn: "ctr", + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{Val: "tx1", + LumMod: &attrValInt{ + Val: 15000, + }, + LumOff: &attrValInt{ + Val: 85000, + }, + }, + }, + }, + }, + PrintSettings: &cPrintSettings{ + PageMargins: &cPageMargins{ + B: 0.75, + L: 0.7, + R: 0.7, + T: 0.7, + Header: 0.3, + Footer: 0.3, + }, + }, + }, + } + plotAreaFunc := map[string]func(*formatChart) *cPlotArea{ + Bar: f.drawBarChart, + Bar3D: f.drawBar3DChart, + Doughnut: f.drawDoughnutChart, + Line: f.drawLineChart, + Pie3D: f.drawPie3DChart, + Pie: f.drawPieChart, + Radar: f.drawRadarChart, + Scatter: f.drawScatterChart, + } + xlsxChartSpace.ChartSpace.Chart.PlotArea = plotAreaFunc[formatSet.Type](formatSet) + + chart, _ := xml.Marshal(xlsxChartSpace) + media := "xl/charts/chart" + strconv.Itoa(count+1) + ".xml" + f.saveFileList(media, string(chart[16:len(chart)-17])) +} + +// drawBarChart provides function to draw the c:plotArea element for bar chart +// by given format sets. +func (f *File) drawBarChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + BarChart: &cCharts{ + BarDir: &attrValString{ + Val: "col", + }, + Grouping: &attrValString{ + Val: "clustered", + }, + VaryColors: &attrValBool{ + Val: true, + }, + Ser: f.drawChartSeries(formatSet), + DLbls: f.drawChartDLbls(formatSet), + AxID: []*attrValInt{ + &attrValInt{Val: 754001152}, + &attrValInt{Val: 753999904}, + }, + }, + CatAx: f.drawPlotAreaCatAx(), + ValAx: f.drawPlotAreaValAx(), + } +} + +// drawBar3DChart provides function to draw the c:plotArea element for 3D bar +// chart by given format sets. +func (f *File) drawBar3DChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + Bar3DChart: &cCharts{ + BarDir: &attrValString{ + Val: "col", + }, + Grouping: &attrValString{ + Val: "clustered", + }, + VaryColors: &attrValBool{ + Val: true, + }, + Ser: f.drawChartSeries(formatSet), + DLbls: f.drawChartDLbls(formatSet), + AxID: []*attrValInt{ + &attrValInt{Val: 754001152}, + &attrValInt{Val: 753999904}, + }, + }, + CatAx: f.drawPlotAreaCatAx(), + ValAx: f.drawPlotAreaValAx(), + } +} + +// drawDoughnutChart provides function to draw the c:plotArea element for +// doughnut chart by given format sets. +func (f *File) drawDoughnutChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + DoughnutChart: &cCharts{ + VaryColors: &attrValBool{ + Val: true, + }, + Ser: f.drawChartSeries(formatSet), + HoleSize: &attrValInt{Val: 75}, + }, + } +} + +// drawLineChart provides function to draw the c:plotArea element for line chart +// by given format sets. +func (f *File) drawLineChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + LineChart: &cCharts{ + Grouping: &attrValString{ + Val: "standard", + }, + VaryColors: &attrValBool{ + Val: false, + }, + Ser: f.drawChartSeries(formatSet), + DLbls: f.drawChartDLbls(formatSet), + Smooth: &attrValBool{ + Val: false, + }, + AxID: []*attrValInt{ + &attrValInt{Val: 754001152}, + &attrValInt{Val: 753999904}, + }, + }, + CatAx: f.drawPlotAreaCatAx(), + ValAx: f.drawPlotAreaValAx(), + } +} + +// drawPieChart provides function to draw the c:plotArea element for pie chart +// by given format sets. +func (f *File) drawPieChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + PieChart: &cCharts{ + VaryColors: &attrValBool{ + Val: true, + }, + Ser: f.drawChartSeries(formatSet), + }, + } +} + +// drawPie3DChart provides function to draw the c:plotArea element for 3D pie +// chart by given format sets. +func (f *File) drawPie3DChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + Pie3DChart: &cCharts{ + VaryColors: &attrValBool{ + Val: true, + }, + Ser: f.drawChartSeries(formatSet), + }, + } +} + +// drawRadarChart provides function to draw the c:plotArea element for radar +// chart by given format sets. +func (f *File) drawRadarChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + RadarChart: &cCharts{ + RadarStyle: &attrValString{ + Val: "marker", + }, + VaryColors: &attrValBool{ + Val: false, + }, + Ser: f.drawChartSeries(formatSet), + DLbls: f.drawChartDLbls(formatSet), + AxID: []*attrValInt{ + &attrValInt{Val: 754001152}, + &attrValInt{Val: 753999904}, + }, + }, + CatAx: f.drawPlotAreaCatAx(), + ValAx: f.drawPlotAreaValAx(), + } +} + +// drawScatterChart provides function to draw the c:plotArea element for scatter +// chart by given format sets. +func (f *File) drawScatterChart(formatSet *formatChart) *cPlotArea { + return &cPlotArea{ + ScatterChart: &cCharts{ + ScatterStyle: &attrValString{ + Val: "smoothMarker", // line,lineMarker,marker,none,smooth,smoothMarker + }, + VaryColors: &attrValBool{ + Val: false, + }, + Ser: f.drawChartSeries(formatSet), + DLbls: f.drawChartDLbls(formatSet), + AxID: []*attrValInt{ + &attrValInt{Val: 754001152}, + &attrValInt{Val: 753999904}, + }, + }, + CatAx: f.drawPlotAreaCatAx(), + ValAx: f.drawPlotAreaValAx(), + } +} + +// drawChartSeries provides function to draw the c:ser element by given format +// sets. +func (f *File) drawChartSeries(formatSet *formatChart) *[]cSer { + ser := []cSer{} + for k, v := range formatSet.Series { + ser = append(ser, cSer{ + IDx: &attrValInt{Val: k}, + Order: &attrValInt{Val: k}, + Tx: &cTx{ + StrRef: &cStrRef{ + F: v.Name, + }, + }, + SpPr: f.drawChartSeriesSpPr(k, formatSet), + Marker: f.drawChartSeriesMarker(k, formatSet), + DPt: f.drawChartSeriesDPt(k, formatSet), + DLbls: f.drawChartSeriesDLbls(formatSet), + Cat: f.drawChartSeriesCat(v, formatSet), + Val: f.drawChartSeriesVal(v, formatSet), + XVal: f.drawChartSeriesXVal(v, formatSet), + YVal: f.drawChartSeriesYVal(v, formatSet), + }) + } + return &ser +} + +// drawChartSeriesSpPr provides function to draw the c:spPr element by given +// format sets. +func (f *File) drawChartSeriesSpPr(i int, formatSet *formatChart) *cSpPr { + spPrScatter := &cSpPr{ + Ln: &aLn{ + W: 25400, + NoFill: " ", + }, + } + spPrLine := &cSpPr{ + Ln: &aLn{ + W: 25400, + Cap: "rnd", // rnd, sq, flat + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{Val: "accent" + strconv.Itoa(i+1)}, + }, + }, + } + chartSeriesSpPr := map[string]*cSpPr{Bar: nil, Bar3D: nil, Doughnut: nil, Line: spPrLine, Pie: nil, Pie3D: nil, Radar: nil, Scatter: spPrScatter} + return chartSeriesSpPr[formatSet.Type] +} + +// drawChartSeriesDPt provides function to draw the c:dPt element by given data +// index and format sets. +func (f *File) drawChartSeriesDPt(i int, formatSet *formatChart) []*cDPt { + dpt := []*cDPt{&cDPt{ + IDx: &attrValInt{Val: i}, + Bubble3D: &attrValBool{Val: false}, + SpPr: &cSpPr{ + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{Val: "accent" + strconv.Itoa(i+1)}, + }, + Ln: &aLn{ + W: 25400, + Cap: "rnd", + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{Val: "lt" + strconv.Itoa(i+1)}, + }, + }, + Sp3D: &aSp3D{ + ContourW: 25400, + ContourClr: &aContourClr{ + SchemeClr: &aSchemeClr{Val: "lt" + strconv.Itoa(i+1)}, + }, + }, + }, + }} + chartSeriesDPt := map[string][]*cDPt{Bar: nil, Bar3D: nil, Doughnut: nil, Line: nil, Pie: dpt, Pie3D: dpt, Radar: nil, Scatter: nil} + return chartSeriesDPt[formatSet.Type] +} + +// drawChartSeriesCat provides function to draw the c:cat element by given chart +// series and format sets. +func (f *File) drawChartSeriesCat(v formatChartSeries, formatSet *formatChart) *cCat { + cat := &cCat{ + StrRef: &cStrRef{ + F: v.Categories, + }, + } + chartSeriesCat := map[string]*cCat{Bar: cat, Bar3D: cat, Doughnut: cat, Line: cat, Pie: cat, Pie3D: cat, Radar: cat, Scatter: nil} + return chartSeriesCat[formatSet.Type] +} + +// drawChartSeriesVal provides function to draw the c:val element by given chart +// series and format sets. +func (f *File) drawChartSeriesVal(v formatChartSeries, formatSet *formatChart) *cVal { + val := &cVal{ + NumRef: &cNumRef{ + F: v.Values, + }, + } + chartSeriesVal := map[string]*cVal{Bar: val, Bar3D: val, Doughnut: val, Line: val, Pie: val, Pie3D: val, Radar: val, Scatter: nil} + return chartSeriesVal[formatSet.Type] +} + +// drawChartSeriesMarker provides function to draw the c:marker element by given +// data index and format sets. +func (f *File) drawChartSeriesMarker(i int, formatSet *formatChart) *cMarker { + marker := &cMarker{ + Symbol: &attrValString{Val: "circle"}, + Size: &attrValInt{Val: 5}, + SpPr: &cSpPr{ + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{ + Val: "accent" + strconv.Itoa(i+1), + }, + }, + Ln: &aLn{ + W: 9252, + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{ + Val: "accent" + strconv.Itoa(i+1), + }, + }, + }, + }, + } + chartSeriesMarker := map[string]*cMarker{Bar: nil, Bar3D: nil, Doughnut: nil, Line: nil, Pie: nil, Pie3D: nil, Radar: nil, Scatter: marker} + return chartSeriesMarker[formatSet.Type] +} + +// drawChartSeriesXVal provides function to draw the c:xVal element by given +// chart series and format sets. +func (f *File) drawChartSeriesXVal(v formatChartSeries, formatSet *formatChart) *cCat { + cat := &cCat{ + StrRef: &cStrRef{ + F: v.Categories, + }, + } + chartSeriesXVal := map[string]*cCat{Bar: nil, Bar3D: nil, Doughnut: nil, Line: nil, Pie: nil, Pie3D: nil, Radar: nil, Scatter: cat} + return chartSeriesXVal[formatSet.Type] +} + +// drawChartSeriesYVal provides function to draw the c:yVal element by given +// chart series and format sets. +func (f *File) drawChartSeriesYVal(v formatChartSeries, formatSet *formatChart) *cVal { + val := &cVal{ + NumRef: &cNumRef{ + F: v.Values, + }, + } + chartSeriesYVal := map[string]*cVal{Bar: nil, Bar3D: nil, Doughnut: nil, Line: nil, Pie: nil, Pie3D: nil, Radar: nil, Scatter: val} + return chartSeriesYVal[formatSet.Type] +} + +// drawChartDLbls provides function to draw the c:dLbls element by given format +// sets. +func (f *File) drawChartDLbls(formatSet *formatChart) *cDLbls { + return &cDLbls{ + ShowLegendKey: &attrValBool{Val: formatSet.Legend.ShowLegendKey}, + ShowVal: &attrValBool{Val: formatSet.Plotarea.ShowVal}, + ShowCatName: &attrValBool{Val: formatSet.Plotarea.ShowCatName}, + ShowSerName: &attrValBool{Val: formatSet.Plotarea.ShowSerName}, + ShowBubbleSize: &attrValBool{Val: formatSet.Plotarea.ShowBubbleSize}, + ShowPercent: &attrValBool{Val: formatSet.Plotarea.ShowPercent}, + ShowLeaderLines: &attrValBool{Val: formatSet.Plotarea.ShowLeaderLines}, + } +} + +// drawChartSeriesDLbls provides function to draw the c:dLbls element by given +// format sets. +func (f *File) drawChartSeriesDLbls(formatSet *formatChart) *cDLbls { + dLbls := &cDLbls{ + ShowLegendKey: &attrValBool{Val: formatSet.Legend.ShowLegendKey}, + ShowVal: &attrValBool{Val: formatSet.Plotarea.ShowVal}, + ShowCatName: &attrValBool{Val: formatSet.Plotarea.ShowCatName}, + ShowSerName: &attrValBool{Val: formatSet.Plotarea.ShowSerName}, + ShowBubbleSize: &attrValBool{Val: formatSet.Plotarea.ShowBubbleSize}, + ShowPercent: &attrValBool{Val: formatSet.Plotarea.ShowPercent}, + ShowLeaderLines: &attrValBool{Val: formatSet.Plotarea.ShowLeaderLines}, + } + chartSeriesDLbls := map[string]*cDLbls{Bar: dLbls, Bar3D: dLbls, Doughnut: dLbls, Line: dLbls, Pie: dLbls, Pie3D: dLbls, Radar: dLbls, Scatter: nil} + return chartSeriesDLbls[formatSet.Type] +} + +// drawPlotAreaCatAx provides function to draw the c:catAx element. +func (f *File) drawPlotAreaCatAx() []*cAxs { + return []*cAxs{ + &cAxs{ + AxID: &attrValInt{Val: 754001152}, + Scaling: &cScaling{ + Orientation: &attrValString{Val: "minMax"}, + }, + Delete: &attrValBool{Val: false}, + AxPos: &attrValString{Val: "b"}, + NumFmt: &cNumFmt{ + FormatCode: "General", + SourceLinked: true, + }, + MajorTickMark: &attrValString{Val: "none"}, + MinorTickMark: &attrValString{Val: "none"}, + TickLblPos: &attrValString{Val: "nextTo"}, + SpPr: f.drawPlotAreaSpPr(), + TxPr: f.drawPlotAreaTxPr(), + CrossAx: &attrValInt{Val: 753999904}, + Crosses: &attrValString{Val: "autoZero"}, + Auto: &attrValBool{Val: true}, + LblAlgn: &attrValString{Val: "ctr"}, + LblOffset: &attrValInt{Val: 100}, + NoMultiLvlLbl: &attrValBool{Val: false}, + }, + } +} + +// drawPlotAreaCatAx provides function to draw the c:valAx element. +func (f *File) drawPlotAreaValAx() []*cAxs { + return []*cAxs{ + &cAxs{ + AxID: &attrValInt{Val: 753999904}, + Scaling: &cScaling{ + Orientation: &attrValString{Val: "minMax"}, + }, + Delete: &attrValBool{Val: false}, + AxPos: &attrValString{Val: "l"}, + NumFmt: &cNumFmt{ + FormatCode: "General", + SourceLinked: true, + }, + MajorTickMark: &attrValString{Val: "none"}, + MinorTickMark: &attrValString{Val: "none"}, + TickLblPos: &attrValString{Val: "nextTo"}, + SpPr: f.drawPlotAreaSpPr(), + TxPr: f.drawPlotAreaTxPr(), + CrossAx: &attrValInt{Val: 754001152}, + Crosses: &attrValString{Val: "autoZero"}, + CrossBetween: &attrValString{Val: "between"}, + }, + } +} + +// drawPlotAreaSpPr provides function to draw the c:spPr element. +func (f *File) drawPlotAreaSpPr() *cSpPr { + return &cSpPr{ + Ln: &aLn{ + W: 9525, + Cap: "flat", + Cmpd: "sng", + Algn: "ctr", + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{ + Val: "tx1", + LumMod: &attrValInt{Val: 15000}, + LumOff: &attrValInt{Val: 85000}, + }, + }, + }, + } +} + +// drawPlotAreaTxPr provides function to draw the c:txPr element. +func (f *File) drawPlotAreaTxPr() *cTxPr { + return &cTxPr{ + BodyPr: aBodyPr{ + Rot: -60000000, + SpcFirstLastPara: true, + VertOverflow: "ellipsis", + Vert: "horz", + Wrap: "square", + Anchor: "ctr", + AnchorCtr: true, + }, + P: aP{ + PPr: aPPr{ + DefRPr: aDefRPr{ + Sz: 900, + B: false, + I: false, + U: "none", + Strike: "noStrike", + Kern: 1200, + Baseline: 0, + SolidFill: &aSolidFill{ + SchemeClr: &aSchemeClr{ + Val: "tx1", + LumMod: &attrValInt{Val: 15000}, + LumOff: &attrValInt{Val: 85000}, + }, + }, + Latin: &aLatin{Typeface: "+mn-lt"}, + Ea: &aEa{Typeface: "+mn-ea"}, + Cs: &aCs{Typeface: "+mn-cs"}, + }, + }, + EndParaRPr: &aEndParaRPr{Lang: "en-US"}, + }, + } +} + +// addDrawingChart provides function to add chart graphic frame by given sheet, +// drawingXML, cell, width, height, relationship index and format sets. +func (f *File) addDrawingChart(sheet, drawingXML, cell string, width, height, rID int, formatSet *formatPicture) { + cell = strings.ToUpper(cell) + fromCol := string(strings.Map(letterOnlyMapF, cell)) + fromRow, _ := strconv.Atoi(strings.Map(intOnlyMapF, cell)) + row := fromRow - 1 + col := titleToNumber(fromCol) + width = int(float64(width) * formatSet.XScale) + height = int(float64(height) * formatSet.YScale) + colStart, rowStart, _, _, colEnd, rowEnd, x2, y2 := f.positionObjectPixels(sheet, col, row, formatSet.OffsetX, formatSet.OffsetY, width, height) + content := encodeWsDr{} + content.WsDr.A = NameSpaceDrawingML + content.WsDr.Xdr = NameSpaceSpreadSheetDrawing + cNvPrID := 1 + _, ok := f.XLSX[drawingXML] + if ok { // Append Model + decodeWsDr := decodeWsDr{} + xml.Unmarshal([]byte(f.readXML(drawingXML)), &decodeWsDr) + cNvPrID = len(decodeWsDr.TwoCellAnchor) + 1 + for _, v := range decodeWsDr.OneCellAnchor { + content.WsDr.OneCellAnchor = append(content.WsDr.OneCellAnchor, &xlsxCellAnchor{ + EditAs: v.EditAs, + GraphicFrame: v.Content, + }) + } + for _, v := range decodeWsDr.TwoCellAnchor { + content.WsDr.TwoCellAnchor = append(content.WsDr.TwoCellAnchor, &xlsxCellAnchor{ + EditAs: v.EditAs, + GraphicFrame: v.Content, + }) + } + } + twoCellAnchor := xlsxCellAnchor{} + twoCellAnchor.EditAs = "oneCell" + from := xlsxFrom{} + from.Col = colStart + from.ColOff = formatSet.OffsetX * EMU + from.Row = rowStart + from.RowOff = formatSet.OffsetY * EMU + to := xlsxTo{} + to.Col = colEnd + to.ColOff = x2 * EMU + to.Row = rowEnd + to.RowOff = y2 * EMU + twoCellAnchor.From = &from + twoCellAnchor.To = &to + + graphicFrame := graphicFrame{ + GraphicFrame: &xlsxGraphicFrame{ + NvGraphicFramePr: xlsxNvGraphicFramePr{ + CNvPr: &xlsxCNvPr{ + ID: cNvPrID, + Name: "Chart " + strconv.Itoa(cNvPrID), + }, + }, + Graphic: &xlsxGraphic{ + GraphicData: &xlsxGraphicData{ + URI: NameSpaceDrawingMLChart, + Chart: &xlsxChart{ + C: NameSpaceDrawingMLChart, + R: SourceRelationship, + RID: "rId" + strconv.Itoa(rID), + }, + }, + }, + }, + } + graphic, _ := xml.Marshal(graphicFrame) + twoCellAnchor.GraphicFrame = string(graphic[14 : len(graphic)-15]) + twoCellAnchor.ClientData = &xlsxClientData{ + FLocksWithSheet: formatSet.FLocksWithSheet, + FPrintsWithSheet: formatSet.FPrintsWithSheet, + } + content.WsDr.TwoCellAnchor = append(content.WsDr.TwoCellAnchor, &twoCellAnchor) + output, err := xml.Marshal(content) + if err != nil { + fmt.Println(err) + } + // Create replacer with pairs as arguments and replace all pairs. + r := strings.NewReplacer("", "", "", "") + result := r.Replace(string(output)) + f.saveFileList(drawingXML, result) +} diff --git a/excelize_test.go b/excelize_test.go index b5aa917..6c484e3 100644 --- a/excelize_test.go +++ b/excelize_test.go @@ -426,3 +426,38 @@ func TestCopySheet(t *testing.T) { t.Log(err) } } + +func TestAddChart(t *testing.T) { + xlsx, err := OpenFile("./test/Workbook1.xlsx") + if err != nil { + t.Log(err) + } + xlsx.SetCellValue("SHEET1", "A30", "Small") + xlsx.SetCellValue("SHEET1", "A31", "Normal") + xlsx.SetCellValue("SHEET1", "A32", "Large") + xlsx.SetCellValue("SHEET1", "B29", "Apple") + xlsx.SetCellValue("SHEET1", "C29", "Prange") + xlsx.SetCellValue("SHEET1", "D29", "Pear") + xlsx.SetCellValue("SHEET1", "B30", 2) + xlsx.SetCellValue("SHEET1", "C30", 3) + xlsx.SetCellValue("SHEET1", "D30", 3) + xlsx.SetCellValue("SHEET1", "B31", 5) + xlsx.SetCellValue("SHEET1", "C31", 2) + xlsx.SetCellValue("SHEET1", "D31", 4) + xlsx.SetCellValue("SHEET1", "B32", 6) + xlsx.SetCellValue("SHEET1", "C32", 7) + xlsx.SetCellValue("SHEET1", "D32", 8) + xlsx.AddChart("SHEET1", "P1", `{"type":"bar3D","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"}],"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":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D Bar 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"}`) + xlsx.AddChart("SHEET1", "X1", `{"type":"bar","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"}],"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":"Fruit Bar 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"}`) + xlsx.AddChart("SHEET1", "P16", `{"type":"doughnut","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"}],"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":"right","show_legend_key":false},"title":{"name":"Fruit Doughnut 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"}`) + xlsx.AddChart("SHEET1", "X16", `{"type":"line","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"}],"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":"top","show_legend_key":false},"title":{"name":"Fruit 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},"show_blanks_as":"zero"}`) + xlsx.AddChart("SHEET1", "P30", `{"type":"pie3D","series":[{"name":"=Sheet1!$A$30","categories":"=Sheet1!$B$29:$D$29","values":"=Sheet1!$B$30:$D$30"}],"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":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D 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"}`) + xlsx.AddChart("SHEET1", "X30", `{"type":"pie","series":[{"name":"=Sheet1!$A$30","categories":"=Sheet1!$B$29:$D$29","values":"=Sheet1!$B$30:$D$30"}],"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":"bottom","show_legend_key":false},"title":{"name":"Fruit 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":"gap"}`) + xlsx.AddChart("SHEET2", "P1", `{"type":"radar","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"}],"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":"top_right","show_legend_key":false},"title":{"name":"Fruit Radar 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":"span"}`) + xlsx.AddChart("SHEET2", "X1", `{"type":"scatter","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"}],"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":"bottom","show_legend_key":false},"title":{"name":"Fruit Scatter 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"}`) + // Save xlsx file by the given path. + err = xlsx.WriteTo("./test/Workbook_6.xlsx") + if err != nil { + t.Log(err) + } +} diff --git a/file.go b/file.go index d0f1c51..da1fbc7 100644 --- a/file.go +++ b/file.go @@ -15,15 +15,15 @@ import ( // func CreateFile() *File { file := make(map[string]string) - file["_rels/.rels"] = templateRels - file["docProps/app.xml"] = templateDocpropsApp - file["docProps/core.xml"] = templateDocpropsCore - file["xl/_rels/workbook.xml.rels"] = templateWorkbookRels - file["xl/theme/theme1.xml"] = templateTheme - file["xl/worksheets/sheet1.xml"] = templateSheet - file["xl/styles.xml"] = templateStyles - file["xl/workbook.xml"] = templateWorkbook - file["[Content_Types].xml"] = templateContentTypes + file["_rels/.rels"] = XMLHeader + templateRels + file["docProps/app.xml"] = XMLHeader + templateDocpropsApp + file["docProps/core.xml"] = XMLHeader + templateDocpropsCore + file["xl/_rels/workbook.xml.rels"] = XMLHeader + templateWorkbookRels + file["xl/theme/theme1.xml"] = XMLHeader + templateTheme + file["xl/worksheets/sheet1.xml"] = XMLHeader + templateSheet + file["xl/styles.xml"] = XMLHeader + templateStyles + file["xl/workbook.xml"] = XMLHeader + templateWorkbook + file["[Content_Types].xml"] = XMLHeader + templateContentTypes return &File{ Sheet: make(map[string]*xlsxWorksheet), XLSX: file, diff --git a/picture.go b/picture.go index 3df8e98..61b489a 100644 --- a/picture.go +++ b/picture.go @@ -105,7 +105,7 @@ func (f *File) AddPicture(sheet, cell, picture, format string) error { f.addSheetDrawing(sheet, rID) } drawingRID = f.addDrawingRelationships(drawingID, SourceRelationshipImage, "../media/image"+strconv.Itoa(pictureID)+ext) - f.addDrawing(sheet, drawingXML, cell, file, image.Width, image.Height, drawingRID, formatSet) + f.addDrawingPicture(sheet, drawingXML, cell, file, image.Width, image.Height, drawingRID, formatSet) f.addMedia(picture, ext) f.addDrawingContentTypePart(drawingID) return err @@ -173,11 +173,12 @@ func (f *File) countDrawings() int { return count } -// addDrawing provides function to add picture by given drawingXML, xAxis, -// yAxis, file name and relationship index. In order to solve the problem that -// the label structure is changed after serialization and deserialization, two -// different structures: decodeWsDr and encodeWsDr are defined. -func (f *File) addDrawing(sheet, drawingXML, cell, file string, width, height, rID int, formatSet *formatPicture) { +// addDrawingPicture provides function to add picture by given sheet, +// drawingXML, cell, file name, width, height relationship index and format +// sets. In order to solve the problem that the label structure is changed after +// serialization and deserialization, two different structures: decodeWsDr and +// encodeWsDr are defined. +func (f *File) addDrawingPicture(sheet, drawingXML, cell, file string, width, height, rID int, formatSet *formatPicture) { cell = strings.ToUpper(cell) fromCol := string(strings.Map(letterOnlyMapF, cell)) fromRow, _ := strconv.Atoi(strings.Map(intOnlyMapF, cell)) @@ -321,8 +322,7 @@ func (f *File) setContentTypePartImageExtensions() { } // addDrawingContentTypePart provides function to add image part relationships -// in http://purl.oclc.org/ooxml/officeDocument/relationships/image and -// appropriate content type. +// in the file [Content_Types].xml by given drawing index. func (f *File) addDrawingContentTypePart(index int) { f.setContentTypePartImageExtensions() content := f.contentTypesReader() diff --git a/rows.go b/rows.go index b76a823..b753fcd 100644 --- a/rows.go +++ b/rows.go @@ -6,9 +6,10 @@ import ( "strings" ) -// GetRows return all the rows in a sheet, for example: +// GetRows return all the rows in a sheet by given "sheet" + index, for example: // -// rows := xlsx.GetRows("Sheet2") +// index := xlsx.GetSheetIndex("Sheet2") +// rows := xlsx.GetRows("sheet" + strconv.Itoa(index)) // for _, row := range rows { // for _, colCell := range row { // fmt.Print(colCell, "\t") diff --git a/templates.go b/templates.go index 68c2fa1..81b531e 100644 --- a/templates.go +++ b/templates.go @@ -10,9 +10,9 @@ const templateDocpropsApp = `` -const templateWorkbook = `` +const templateWorkbook = `` -const templateStyles = `` +const templateStyles = `` const templateSheet = `` @@ -22,4 +22,4 @@ const templateDocpropsCore = `` -const templateTheme = `` +const templateTheme = `` diff --git a/test/images/chart.png b/test/images/chart.png new file mode 100644 index 0000000000000000000000000000000000000000..03482dae748232365dd39bc989e60e59e3600280 GIT binary patch literal 128272 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