forked from p30928647/excelize
- Supplemental worksheet struct fields and field order adjustment
- Testing case for set and get doc properties - Update charts struct XML tags
This commit is contained in:
parent
db99373b25
commit
cff16fa811
|
@ -1,8 +1,18 @@
|
|||
// Copyright 2016 - 2019 The excelize Authors. All rights reserved. Use of
|
||||
// this source code is governed by a BSD-style license that can be found in
|
||||
// the LICENSE file.
|
||||
//
|
||||
// Package excelize providing a set of functions that allow you to write to
|
||||
// and read from XLSX files. Support reads and writes XLSX file generated by
|
||||
// Microsoft Excel™ 2007 and later. Support save file without losing original
|
||||
// charts of XLSX. This library needs Go version 1.8 or later.
|
||||
|
||||
package excelize
|
||||
|
||||
import "strings"
|
||||
|
||||
// GetMergeCells provides a function to get all merged cells from a worksheet currently.
|
||||
// GetMergeCells provides a function to get all merged cells from a worksheet
|
||||
// currently.
|
||||
func (f *File) GetMergeCells(sheet string) ([]MergeCell, error) {
|
||||
var mergeCells []MergeCell
|
||||
xlsx, err := f.workSheetReader(sheet)
|
||||
|
@ -45,4 +55,4 @@ func (m *MergeCell) GetStartAxis() string {
|
|||
func (m *MergeCell) GetEndAxis() string {
|
||||
axis := strings.Split((*m)[0], ":")
|
||||
return axis[1]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
// Copyright 2016 - 2019 The excelize Authors. All rights reserved. Use of
|
||||
// this source code is governed by a BSD-style license that can be found in
|
||||
// the LICENSE file.
|
||||
//
|
||||
// Package excelize providing a set of functions that allow you to write to
|
||||
// and read from XLSX files. Support reads and writes XLSX file generated by
|
||||
// Microsoft Excel™ 2007 and later. Support save file without losing original
|
||||
// charts of XLSX. This library needs Go version 1.8 or later.
|
||||
|
||||
package excelize
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestSetDocProps(t *testing.T) {
|
||||
f, err := OpenFile(filepath.Join("test", "Book1.xlsx"))
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.NoError(t, f.SetDocProps(&DocProperties{
|
||||
Category: "category",
|
||||
ContentStatus: "Draft",
|
||||
Created: "2019-06-04T22:00:10Z",
|
||||
Creator: "Go Excelize",
|
||||
Description: "This file created by Go Excelize",
|
||||
Identifier: "xlsx",
|
||||
Keywords: "Spreadsheet",
|
||||
LastModifiedBy: "Go Author",
|
||||
Modified: "2019-06-04T22:00:10Z",
|
||||
Revision: "0",
|
||||
Subject: "Test Subject",
|
||||
Title: "Test Title",
|
||||
Language: "en-US",
|
||||
Version: "1.0.0",
|
||||
}))
|
||||
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetDocProps.xlsx")))
|
||||
f.XLSX["docProps/core.xml"] = nil
|
||||
assert.EqualError(t, f.SetDocProps(&DocProperties{}), "EOF")
|
||||
}
|
||||
|
||||
func TestGetDocProps(t *testing.T) {
|
||||
f, err := OpenFile(filepath.Join("test", "Book1.xlsx"))
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
props, err := f.GetDocProps()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, props.Creator, "Microsoft Office User")
|
||||
f.XLSX["docProps/core.xml"] = nil
|
||||
_, err = f.GetDocProps()
|
||||
assert.EqualError(t, err, "EOF")
|
||||
}
|
|
@ -192,7 +192,7 @@ func TestBrokenFile(t *testing.T) {
|
|||
|
||||
t.Run("SaveAsEmptyStruct", func(t *testing.T) {
|
||||
// Test write file with broken file struct with given path.
|
||||
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestBrokenFile.SaveAsEmptyStruct.xlsx")))
|
||||
assert.NoError(t, f.SaveAs(filepath.Join("test", "BrokenFile.SaveAsEmptyStruct.xlsx")))
|
||||
})
|
||||
|
||||
t.Run("OpenBadWorkbook", func(t *testing.T) {
|
||||
|
|
308
xmlChart.go
308
xmlChart.go
|
@ -11,66 +11,66 @@ package excelize
|
|||
|
||||
import "encoding/xml"
|
||||
|
||||
// xlsxChartSpace directly maps the c:chartSpace element. The chart namespace in
|
||||
// xlsxChartSpace directly maps the chartSpace element. The chart namespace in
|
||||
// DrawingML is for representing visualizations of numeric data with column
|
||||
// charts, pie charts, scatter charts, or other types of charts.
|
||||
type xlsxChartSpace struct {
|
||||
XMLName xml.Name `xml:"c:chartSpace"`
|
||||
XMLName xml.Name `xml:"http://schemas.openxmlformats.org/drawingml/2006/chart chartSpace"`
|
||||
XMLNSc string `xml:"xmlns:c,attr"`
|
||||
XMLNSa string `xml:"xmlns:a,attr"`
|
||||
XMLNSr string `xml:"xmlns:r,attr"`
|
||||
XMLNSc16r2 string `xml:"xmlns:c16r2,attr"`
|
||||
Date1904 *attrValBool `xml:"c:date1904"`
|
||||
Lang *attrValString `xml:"c:lang"`
|
||||
RoundedCorners *attrValBool `xml:"c:roundedCorners"`
|
||||
Chart cChart `xml:"c:chart"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
TxPr *cTxPr `xml:"c:txPr"`
|
||||
PrintSettings *cPrintSettings `xml:"c:printSettings"`
|
||||
Date1904 *attrValBool `xml:"date1904"`
|
||||
Lang *attrValString `xml:"lang"`
|
||||
RoundedCorners *attrValBool `xml:"roundedCorners"`
|
||||
Chart cChart `xml:"chart"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
TxPr *cTxPr `xml:"txPr"`
|
||||
PrintSettings *cPrintSettings `xml:"printSettings"`
|
||||
}
|
||||
|
||||
// cThicknessSpPr directly maps the element that specifies the thickness of the
|
||||
// walls or floor as a percentage of the largest dimension of the plot volume
|
||||
// and SpPr element.
|
||||
// cThicknessSpPr directly maps the element that specifies the thickness of
|
||||
// the walls or floor as a percentage of the largest dimension of the plot
|
||||
// volume and SpPr element.
|
||||
type cThicknessSpPr struct {
|
||||
Thickness *attrValInt `xml:"c:thickness"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
Thickness *attrValInt `xml:"thickness"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
}
|
||||
|
||||
// cChart (Chart) directly maps the c:chart element. This element specifies a
|
||||
// cChart (Chart) directly maps the chart element. This element specifies a
|
||||
// title.
|
||||
type cChart struct {
|
||||
Title *cTitle `xml:"c:title"`
|
||||
AutoTitleDeleted *cAutoTitleDeleted `xml:"c:autoTitleDeleted"`
|
||||
View3D *cView3D `xml:"c:view3D"`
|
||||
Floor *cThicknessSpPr `xml:"c:floor"`
|
||||
SideWall *cThicknessSpPr `xml:"c:sideWall"`
|
||||
BackWall *cThicknessSpPr `xml:"c:backWall"`
|
||||
PlotArea *cPlotArea `xml:"c:plotArea"`
|
||||
Legend *cLegend `xml:"c:legend"`
|
||||
PlotVisOnly *attrValBool `xml:"c:plotVisOnly"`
|
||||
DispBlanksAs *attrValString `xml:"c:dispBlanksAs"`
|
||||
ShowDLblsOverMax *attrValBool `xml:"c:showDLblsOverMax"`
|
||||
Title *cTitle `xml:"title"`
|
||||
AutoTitleDeleted *cAutoTitleDeleted `xml:"autoTitleDeleted"`
|
||||
View3D *cView3D `xml:"view3D"`
|
||||
Floor *cThicknessSpPr `xml:"floor"`
|
||||
SideWall *cThicknessSpPr `xml:"sideWall"`
|
||||
BackWall *cThicknessSpPr `xml:"backWall"`
|
||||
PlotArea *cPlotArea `xml:"plotArea"`
|
||||
Legend *cLegend `xml:"legend"`
|
||||
PlotVisOnly *attrValBool `xml:"plotVisOnly"`
|
||||
DispBlanksAs *attrValString `xml:"dispBlanksAs"`
|
||||
ShowDLblsOverMax *attrValBool `xml:"showDLblsOverMax"`
|
||||
}
|
||||
|
||||
// cTitle (Title) directly maps the c:title element. This element specifies a
|
||||
// cTitle (Title) directly maps the title element. This element specifies a
|
||||
// title.
|
||||
type cTitle struct {
|
||||
Tx cTx `xml:"c:tx,omitempty"`
|
||||
Layout string `xml:"c:layout,omitempty"`
|
||||
Overlay attrValBool `xml:"c:overlay,omitempty"`
|
||||
SpPr cSpPr `xml:"c:spPr,omitempty"`
|
||||
TxPr cTxPr `xml:"c:txPr,omitempty"`
|
||||
Tx cTx `xml:"tx,omitempty"`
|
||||
Layout string `xml:"layout,omitempty"`
|
||||
Overlay attrValBool `xml:"overlay,omitempty"`
|
||||
SpPr cSpPr `xml:"spPr,omitempty"`
|
||||
TxPr cTxPr `xml:"txPr,omitempty"`
|
||||
}
|
||||
|
||||
// cTx (Chart Text) directly maps the c:tx element. This element specifies text
|
||||
// cTx (Chart Text) directly maps the tx element. This element specifies text
|
||||
// to use on a chart, including rich text formatting.
|
||||
type cTx struct {
|
||||
StrRef *cStrRef `xml:"c:strRef"`
|
||||
Rich *cRich `xml:"c:rich,omitempty"`
|
||||
StrRef *cStrRef `xml:"strRef"`
|
||||
Rich *cRich `xml:"rich,omitempty"`
|
||||
}
|
||||
|
||||
// cRich (Rich Text) directly maps the c:rich element. This element contains a
|
||||
// cRich (Rich Text) directly maps the rich element. This element contains a
|
||||
// string with rich text formatting.
|
||||
type cRich struct {
|
||||
BodyPr aBodyPr `xml:"a:bodyPr,omitempty"`
|
||||
|
@ -186,7 +186,7 @@ type aR struct {
|
|||
T string `xml:"a:t,omitempty"`
|
||||
}
|
||||
|
||||
// aRPr (Run Properties) directly maps the c:rPr element. This element
|
||||
// aRPr (Run Properties) directly maps the rPr element. This element
|
||||
// specifies a set of run properties which shall be applied to the contents of
|
||||
// the parent run after all style formatting has been applied to the text. These
|
||||
// properties are defined as direct formatting, since they are directly applied
|
||||
|
@ -217,7 +217,7 @@ type aRPr struct {
|
|||
Cs *aCs `xml:"a:cs"`
|
||||
}
|
||||
|
||||
// cSpPr (Shape Properties) directly maps the c:spPr element. This element
|
||||
// cSpPr (Shape Properties) directly maps the spPr element. This element
|
||||
// specifies the visual shape properties that can be applied to a shape. These
|
||||
// properties include the shape fill, outline, geometry, effects, and 3D
|
||||
// orientation.
|
||||
|
@ -259,7 +259,7 @@ type aLn struct {
|
|||
SolidFill *aSolidFill `xml:"a:solidFill"`
|
||||
}
|
||||
|
||||
// cTxPr (Text Properties) directly maps the c:txPr element. This element
|
||||
// cTxPr (Text Properties) directly maps the txPr element. This element
|
||||
// specifies text formatting. The lstStyle element is not supported.
|
||||
type cTxPr struct {
|
||||
BodyPr aBodyPr `xml:"a:bodyPr,omitempty"`
|
||||
|
@ -282,207 +282,207 @@ type aEndParaRPr struct {
|
|||
}
|
||||
|
||||
// cAutoTitleDeleted (Auto Title Is Deleted) directly maps the
|
||||
// c:autoTitleDeleted element. This element specifies the title shall not be
|
||||
// autoTitleDeleted element. This element specifies the title shall not be
|
||||
// shown for this chart.
|
||||
type cAutoTitleDeleted struct {
|
||||
Val bool `xml:"val,attr"`
|
||||
}
|
||||
|
||||
// cView3D (View In 3D) directly maps the c:view3D element. This element
|
||||
// cView3D (View In 3D) directly maps the view3D element. This element
|
||||
// specifies the 3-D view of the chart.
|
||||
type cView3D struct {
|
||||
RotX *attrValInt `xml:"c:rotX"`
|
||||
RotY *attrValInt `xml:"c:rotY"`
|
||||
DepthPercent *attrValInt `xml:"c:depthPercent"`
|
||||
RAngAx *attrValInt `xml:"c:rAngAx"`
|
||||
RotX *attrValInt `xml:"rotX"`
|
||||
RotY *attrValInt `xml:"rotY"`
|
||||
DepthPercent *attrValInt `xml:"depthPercent"`
|
||||
RAngAx *attrValInt `xml:"rAngAx"`
|
||||
}
|
||||
|
||||
// cPlotArea directly maps the c:plotArea element. This element specifies the
|
||||
// cPlotArea directly maps the plotArea element. This element specifies the
|
||||
// plot area of the chart.
|
||||
type cPlotArea struct {
|
||||
Layout *string `xml:"c:layout"`
|
||||
AreaChart *cCharts `xml:"c:areaChart"`
|
||||
Area3DChart *cCharts `xml:"c:area3DChart"`
|
||||
BarChart *cCharts `xml:"c:barChart"`
|
||||
Bar3DChart *cCharts `xml:"c:bar3DChart"`
|
||||
DoughnutChart *cCharts `xml:"c:doughnutChart"`
|
||||
LineChart *cCharts `xml:"c:lineChart"`
|
||||
PieChart *cCharts `xml:"c:pieChart"`
|
||||
Pie3DChart *cCharts `xml:"c:pie3DChart"`
|
||||
RadarChart *cCharts `xml:"c:radarChart"`
|
||||
ScatterChart *cCharts `xml:"c:scatterChart"`
|
||||
CatAx []*cAxs `xml:"c:catAx"`
|
||||
ValAx []*cAxs `xml:"c:valAx"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
Layout *string `xml:"layout"`
|
||||
AreaChart *cCharts `xml:"areaChart"`
|
||||
Area3DChart *cCharts `xml:"area3DChart"`
|
||||
BarChart *cCharts `xml:"barChart"`
|
||||
Bar3DChart *cCharts `xml:"bar3DChart"`
|
||||
DoughnutChart *cCharts `xml:"doughnutChart"`
|
||||
LineChart *cCharts `xml:"lineChart"`
|
||||
PieChart *cCharts `xml:"pieChart"`
|
||||
Pie3DChart *cCharts `xml:"pie3DChart"`
|
||||
RadarChart *cCharts `xml:"radarChart"`
|
||||
ScatterChart *cCharts `xml:"scatterChart"`
|
||||
CatAx []*cAxs `xml:"catAx"`
|
||||
ValAx []*cAxs `xml:"valAx"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
}
|
||||
|
||||
// cCharts specifies the common element of the chart.
|
||||
type cCharts struct {
|
||||
BarDir *attrValString `xml:"c:barDir"`
|
||||
Grouping *attrValString `xml:"c:grouping"`
|
||||
RadarStyle *attrValString `xml:"c:radarStyle"`
|
||||
ScatterStyle *attrValString `xml:"c:scatterStyle"`
|
||||
VaryColors *attrValBool `xml:"c:varyColors"`
|
||||
Ser *[]cSer `xml:"c:ser"`
|
||||
DLbls *cDLbls `xml:"c:dLbls"`
|
||||
HoleSize *attrValInt `xml:"c:holeSize"`
|
||||
Smooth *attrValBool `xml:"c:smooth"`
|
||||
Overlap *attrValInt `xml:"c:overlap"`
|
||||
AxID []*attrValInt `xml:"c:axId"`
|
||||
BarDir *attrValString `xml:"barDir"`
|
||||
Grouping *attrValString `xml:"grouping"`
|
||||
RadarStyle *attrValString `xml:"radarStyle"`
|
||||
ScatterStyle *attrValString `xml:"scatterStyle"`
|
||||
VaryColors *attrValBool `xml:"varyColors"`
|
||||
Ser *[]cSer `xml:"ser"`
|
||||
DLbls *cDLbls `xml:"dLbls"`
|
||||
HoleSize *attrValInt `xml:"holeSize"`
|
||||
Smooth *attrValBool `xml:"smooth"`
|
||||
Overlap *attrValInt `xml:"overlap"`
|
||||
AxID []*attrValInt `xml:"axId"`
|
||||
}
|
||||
|
||||
// cAxs directly maps the c:catAx and c:valAx element.
|
||||
// cAxs directly maps the catAx and valAx element.
|
||||
type cAxs struct {
|
||||
AxID *attrValInt `xml:"c:axId"`
|
||||
Scaling *cScaling `xml:"c:scaling"`
|
||||
Delete *attrValBool `xml:"c:delete"`
|
||||
AxPos *attrValString `xml:"c:axPos"`
|
||||
NumFmt *cNumFmt `xml:"c:numFmt"`
|
||||
MajorTickMark *attrValString `xml:"c:majorTickMark"`
|
||||
MinorTickMark *attrValString `xml:"c:minorTickMark"`
|
||||
TickLblPos *attrValString `xml:"c:tickLblPos"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
TxPr *cTxPr `xml:"c:txPr"`
|
||||
CrossAx *attrValInt `xml:"c:crossAx"`
|
||||
Crosses *attrValString `xml:"c:crosses"`
|
||||
CrossBetween *attrValString `xml:"c:crossBetween"`
|
||||
Auto *attrValBool `xml:"c:auto"`
|
||||
LblAlgn *attrValString `xml:"c:lblAlgn"`
|
||||
LblOffset *attrValInt `xml:"c:lblOffset"`
|
||||
NoMultiLvlLbl *attrValBool `xml:"c:noMultiLvlLbl"`
|
||||
AxID *attrValInt `xml:"axId"`
|
||||
Scaling *cScaling `xml:"scaling"`
|
||||
Delete *attrValBool `xml:"delete"`
|
||||
AxPos *attrValString `xml:"axPos"`
|
||||
NumFmt *cNumFmt `xml:"numFmt"`
|
||||
MajorTickMark *attrValString `xml:"majorTickMark"`
|
||||
MinorTickMark *attrValString `xml:"minorTickMark"`
|
||||
TickLblPos *attrValString `xml:"tickLblPos"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
TxPr *cTxPr `xml:"txPr"`
|
||||
CrossAx *attrValInt `xml:"crossAx"`
|
||||
Crosses *attrValString `xml:"crosses"`
|
||||
CrossBetween *attrValString `xml:"crossBetween"`
|
||||
Auto *attrValBool `xml:"auto"`
|
||||
LblAlgn *attrValString `xml:"lblAlgn"`
|
||||
LblOffset *attrValInt `xml:"lblOffset"`
|
||||
NoMultiLvlLbl *attrValBool `xml:"noMultiLvlLbl"`
|
||||
}
|
||||
|
||||
// cScaling directly maps the c:scaling element. This element contains
|
||||
// cScaling directly maps the scaling element. This element contains
|
||||
// additional axis settings.
|
||||
type cScaling struct {
|
||||
Orientation *attrValString `xml:"c:orientation"`
|
||||
Max *attrValFloat `xml:"c:max"`
|
||||
Min *attrValFloat `xml:"c:min"`
|
||||
Orientation *attrValString `xml:"orientation"`
|
||||
Max *attrValFloat `xml:"max"`
|
||||
Min *attrValFloat `xml:"min"`
|
||||
}
|
||||
|
||||
// cNumFmt (Numbering Format) directly maps the c:numFmt element. This element
|
||||
// cNumFmt (Numbering Format) directly maps the numFmt element. This element
|
||||
// specifies number formatting for the parent element.
|
||||
type cNumFmt struct {
|
||||
FormatCode string `xml:"formatCode,attr"`
|
||||
SourceLinked bool `xml:"sourceLinked,attr"`
|
||||
}
|
||||
|
||||
// cSer directly maps the c:ser element. This element specifies a series on a
|
||||
// cSer directly maps the ser element. This element specifies a series on a
|
||||
// chart.
|
||||
type cSer struct {
|
||||
IDx *attrValInt `xml:"c:idx"`
|
||||
Order *attrValInt `xml:"c:order"`
|
||||
Tx *cTx `xml:"c:tx"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
DPt []*cDPt `xml:"c:dPt"`
|
||||
DLbls *cDLbls `xml:"c:dLbls"`
|
||||
Marker *cMarker `xml:"c:marker"`
|
||||
InvertIfNegative *attrValBool `xml:"c:invertIfNegative"`
|
||||
Cat *cCat `xml:"c:cat"`
|
||||
Val *cVal `xml:"c:val"`
|
||||
XVal *cCat `xml:"c:xVal"`
|
||||
YVal *cVal `xml:"c:yVal"`
|
||||
Smooth *attrValBool `xml:"c:smooth"`
|
||||
IDx *attrValInt `xml:"idx"`
|
||||
Order *attrValInt `xml:"order"`
|
||||
Tx *cTx `xml:"tx"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
DPt []*cDPt `xml:"dPt"`
|
||||
DLbls *cDLbls `xml:"dLbls"`
|
||||
Marker *cMarker `xml:"marker"`
|
||||
InvertIfNegative *attrValBool `xml:"invertIfNegative"`
|
||||
Cat *cCat `xml:"cat"`
|
||||
Val *cVal `xml:"val"`
|
||||
XVal *cCat `xml:"xVal"`
|
||||
YVal *cVal `xml:"yVal"`
|
||||
Smooth *attrValBool `xml:"smooth"`
|
||||
}
|
||||
|
||||
// cMarker (Marker) directly maps the c:marker element. This element specifies a
|
||||
// cMarker (Marker) directly maps the marker element. This element specifies a
|
||||
// data marker.
|
||||
type cMarker struct {
|
||||
Symbol *attrValString `xml:"c:symbol"`
|
||||
Size *attrValInt `xml:"c:size"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
Symbol *attrValString `xml:"symbol"`
|
||||
Size *attrValInt `xml:"size"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
}
|
||||
|
||||
// cDPt (Data Point) directly maps the c:dPt element. This element specifies a
|
||||
// cDPt (Data Point) directly maps the dPt element. This element specifies a
|
||||
// single data point.
|
||||
type cDPt struct {
|
||||
IDx *attrValInt `xml:"c:idx"`
|
||||
Bubble3D *attrValBool `xml:"c:bubble3D"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
IDx *attrValInt `xml:"idx"`
|
||||
Bubble3D *attrValBool `xml:"bubble3D"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
}
|
||||
|
||||
// cCat (Category Axis Data) directly maps the c:cat element. This element
|
||||
// cCat (Category Axis Data) directly maps the cat element. This element
|
||||
// specifies the data used for the category axis.
|
||||
type cCat struct {
|
||||
StrRef *cStrRef `xml:"c:strRef"`
|
||||
StrRef *cStrRef `xml:"strRef"`
|
||||
}
|
||||
|
||||
// cStrRef (String Reference) directly maps the c:strRef element. This element
|
||||
// cStrRef (String Reference) directly maps the strRef element. This element
|
||||
// specifies a reference to data for a single data label or title with a cache
|
||||
// of the last values used.
|
||||
type cStrRef struct {
|
||||
F string `xml:"c:f"`
|
||||
StrCache *cStrCache `xml:"c:strCache"`
|
||||
F string `xml:"f"`
|
||||
StrCache *cStrCache `xml:"strCache"`
|
||||
}
|
||||
|
||||
// cStrCache (String Cache) directly maps the c:strCache element. This element
|
||||
// cStrCache (String Cache) directly maps the strCache element. This element
|
||||
// specifies the last string data used for a chart.
|
||||
type cStrCache struct {
|
||||
Pt []*cPt `xml:"c:pt"`
|
||||
PtCount *attrValInt `xml:"c:ptCount"`
|
||||
Pt []*cPt `xml:"pt"`
|
||||
PtCount *attrValInt `xml:"ptCount"`
|
||||
}
|
||||
|
||||
// cPt directly maps the c:pt element. This element specifies data for a
|
||||
// cPt directly maps the pt element. This element specifies data for a
|
||||
// particular data point.
|
||||
type cPt struct {
|
||||
IDx int `xml:"idx,attr"`
|
||||
V *string `xml:"c:v"`
|
||||
V *string `xml:"v"`
|
||||
}
|
||||
|
||||
// cVal directly maps the c:val element. This element specifies the data values
|
||||
// cVal directly maps the val element. This element specifies the data values
|
||||
// which shall be used to define the location of data markers on a chart.
|
||||
type cVal struct {
|
||||
NumRef *cNumRef `xml:"c:numRef"`
|
||||
NumRef *cNumRef `xml:"numRef"`
|
||||
}
|
||||
|
||||
// cNumRef directly maps the c:numRef element. This element specifies a
|
||||
// cNumRef directly maps the numRef element. This element specifies a
|
||||
// reference to numeric data with a cache of the last values used.
|
||||
type cNumRef struct {
|
||||
F string `xml:"c:f"`
|
||||
NumCache *cNumCache `xml:"c:numCache"`
|
||||
F string `xml:"f"`
|
||||
NumCache *cNumCache `xml:"numCache"`
|
||||
}
|
||||
|
||||
// cNumCache directly maps the c:numCache element. This element specifies the
|
||||
// cNumCache directly maps the numCache element. This element specifies the
|
||||
// last data shown on the chart for a series.
|
||||
type cNumCache struct {
|
||||
FormatCode string `xml:"c:formatCode"`
|
||||
Pt []*cPt `xml:"c:pt"`
|
||||
PtCount *attrValInt `xml:"c:ptCount"`
|
||||
FormatCode string `xml:"formatCode"`
|
||||
Pt []*cPt `xml:"pt"`
|
||||
PtCount *attrValInt `xml:"ptCount"`
|
||||
}
|
||||
|
||||
// cDLbls (Data Lables) directly maps the c:dLbls element. This element serves
|
||||
// cDLbls (Data Lables) directly maps the dLbls element. This element serves
|
||||
// as a root element that specifies the settings for the data labels for an
|
||||
// entire series or the entire chart. It contains child elements that specify
|
||||
// the specific formatting and positioning settings.
|
||||
type cDLbls struct {
|
||||
ShowLegendKey *attrValBool `xml:"c:showLegendKey"`
|
||||
ShowVal *attrValBool `xml:"c:showVal"`
|
||||
ShowCatName *attrValBool `xml:"c:showCatName"`
|
||||
ShowSerName *attrValBool `xml:"c:showSerName"`
|
||||
ShowPercent *attrValBool `xml:"c:showPercent"`
|
||||
ShowBubbleSize *attrValBool `xml:"c:showBubbleSize"`
|
||||
ShowLeaderLines *attrValBool `xml:"c:showLeaderLines"`
|
||||
ShowLegendKey *attrValBool `xml:"showLegendKey"`
|
||||
ShowVal *attrValBool `xml:"showVal"`
|
||||
ShowCatName *attrValBool `xml:"showCatName"`
|
||||
ShowSerName *attrValBool `xml:"showSerName"`
|
||||
ShowPercent *attrValBool `xml:"showPercent"`
|
||||
ShowBubbleSize *attrValBool `xml:"showBubbleSize"`
|
||||
ShowLeaderLines *attrValBool `xml:"showLeaderLines"`
|
||||
}
|
||||
|
||||
// cLegend (Legend) directly maps the c:legend element. This element specifies
|
||||
// cLegend (Legend) directly maps the legend element. This element specifies
|
||||
// the legend.
|
||||
type cLegend struct {
|
||||
Layout *string `xml:"c:layout"`
|
||||
LegendPos *attrValString `xml:"c:legendPos"`
|
||||
Overlay *attrValBool `xml:"c:overlay"`
|
||||
SpPr *cSpPr `xml:"c:spPr"`
|
||||
TxPr *cTxPr `xml:"c:txPr"`
|
||||
Layout *string `xml:"layout"`
|
||||
LegendPos *attrValString `xml:"legendPos"`
|
||||
Overlay *attrValBool `xml:"overlay"`
|
||||
SpPr *cSpPr `xml:"spPr"`
|
||||
TxPr *cTxPr `xml:"txPr"`
|
||||
}
|
||||
|
||||
// cPrintSettings directly maps the c:printSettings element. This element
|
||||
// cPrintSettings directly maps the printSettings element. This element
|
||||
// specifies the print settings for the chart.
|
||||
type cPrintSettings struct {
|
||||
HeaderFooter *string `xml:"c:headerFooter"`
|
||||
PageMargins *cPageMargins `xml:"c:pageMargins"`
|
||||
PageSetup *string `xml:"c:pageSetup"`
|
||||
HeaderFooter *string `xml:"headerFooter"`
|
||||
PageMargins *cPageMargins `xml:"pageMargins"`
|
||||
PageSetup *string `xml:"pageSetup"`
|
||||
}
|
||||
|
||||
// cPageMargins directly maps the c:pageMargins element. This element specifies
|
||||
// cPageMargins directly maps the pageMargins element. This element specifies
|
||||
// the page margins for a chart.
|
||||
type cPageMargins struct {
|
||||
B float64 `xml:"b,attr"`
|
||||
|
|
|
@ -24,6 +24,7 @@ type xlsxWorksheet struct {
|
|||
SheetData xlsxSheetData `xml:"sheetData"`
|
||||
SheetProtection *xlsxSheetProtection `xml:"sheetProtection"`
|
||||
AutoFilter *xlsxAutoFilter `xml:"autoFilter"`
|
||||
CustomSheetViews *xlsxCustomSheetViews `xml:"customSheetViews"`
|
||||
MergeCells *xlsxMergeCells `xml:"mergeCells"`
|
||||
PhoneticPr *xlsxPhoneticPr `xml:"phoneticPr"`
|
||||
ConditionalFormatting []*xlsxConditionalFormatting `xml:"conditionalFormatting"`
|
||||
|
@ -33,6 +34,8 @@ type xlsxWorksheet struct {
|
|||
PageMargins *xlsxPageMargins `xml:"pageMargins"`
|
||||
PageSetUp *xlsxPageSetUp `xml:"pageSetup"`
|
||||
HeaderFooter *xlsxHeaderFooter `xml:"headerFooter"`
|
||||
RowBreaks *xlsxBreaks `xml:"rowBreaks"`
|
||||
ColBreaks *xlsxBreaks `xml:"colBreaks"`
|
||||
Drawing *xlsxDrawing `xml:"drawing"`
|
||||
LegacyDrawing *xlsxLegacyDrawing `xml:"legacyDrawing"`
|
||||
Picture *xlsxPicture `xml:"picture"`
|
||||
|
@ -299,6 +302,63 @@ type xlsxRow struct {
|
|||
C []xlsxC `xml:"c"`
|
||||
}
|
||||
|
||||
// xlsxCustomSheetViews directly maps the customSheetViews element. This is a
|
||||
// collection of custom sheet views.
|
||||
type xlsxCustomSheetViews struct {
|
||||
CustomSheetView []*xlsxCustomSheetView `xml:"customSheetView"`
|
||||
}
|
||||
|
||||
// xlsxBrk directly maps the row or column break to use when paginating a
|
||||
// worksheet.
|
||||
type xlsxBrk struct {
|
||||
ID int `xml:"id,attr,omitempty"`
|
||||
Min int `xml:"min,attr,omitempty"`
|
||||
Max int `xml:"max,attr,omitempty"`
|
||||
Man bool `xml:"man,attr,omitempty"`
|
||||
Pt bool `xml:"pt,attr,omitempty"`
|
||||
}
|
||||
|
||||
// xlsxBreaks directly maps a collection of the row or column breaks.
|
||||
type xlsxBreaks struct {
|
||||
Brk *xlsxBrk `xml:"brk"`
|
||||
Count int `xml:"count,attr,omitempty"`
|
||||
ManualBreakCount int `xml:"manualBreakCount,attr,omitempty"`
|
||||
}
|
||||
|
||||
// xlsxCustomSheetView directly maps the customSheetView element.
|
||||
type xlsxCustomSheetView struct {
|
||||
Pane *xlsxPane `xml:"pane"`
|
||||
Selection *xlsxSelection `xml:"selection"`
|
||||
RowBreaks *xlsxBreaks `xml:"rowBreaks"`
|
||||
ColBreaks *xlsxBreaks `xml:"colBreaks"`
|
||||
PageMargins *xlsxPageMargins `xml:"pageMargins"`
|
||||
PrintOptions *xlsxPrintOptions `xml:"printOptions"`
|
||||
PageSetup *xlsxPageSetUp `xml:"pageSetup"`
|
||||
HeaderFooter *xlsxHeaderFooter `xml:"headerFooter"`
|
||||
AutoFilter *xlsxAutoFilter `xml:"autoFilter"`
|
||||
ExtLst *xlsxExt `xml:"extLst"`
|
||||
GUID string `xml:"guid,attr"`
|
||||
Scale int `xml:"scale,attr,omitempty"`
|
||||
ColorID int `xml:"colorId,attr,omitempty"`
|
||||
ShowPageBreaks bool `xml:"showPageBreaks,attr,omitempty"`
|
||||
ShowFormulas bool `xml:"showFormulas,attr,omitempty"`
|
||||
ShowGridLines bool `xml:"showGridLines,attr,omitempty"`
|
||||
ShowRowCol bool `xml:"showRowCol,attr,omitempty"`
|
||||
OutlineSymbols bool `xml:"outlineSymbols,attr,omitempty"`
|
||||
ZeroValues bool `xml:"zeroValues,attr,omitempty"`
|
||||
FitToPage bool `xml:"fitToPage,attr,omitempty"`
|
||||
PrintArea bool `xml:"printArea,attr,omitempty"`
|
||||
Filter bool `xml:"filter,attr,omitempty"`
|
||||
ShowAutoFilter bool `xml:"showAutoFilter,attr,omitempty"`
|
||||
HiddenRows bool `xml:"hiddenRows,attr,omitempty"`
|
||||
HiddenColumns bool `xml:"hiddenColumns,attr,omitempty"`
|
||||
State string `xml:"state,attr,omitempty"`
|
||||
FilterUnique bool `xml:"filterUnique,attr,omitempty"`
|
||||
View string `xml:"view,attr,omitempty"`
|
||||
ShowRuler bool `xml:"showRuler,attr,omitempty"`
|
||||
TopLeftCell string `xml:"topLeftCell,attr,omitempty"`
|
||||
}
|
||||
|
||||
// xlsxMergeCell directly maps the mergeCell element. A single merged cell.
|
||||
type xlsxMergeCell struct {
|
||||
Ref string `xml:"ref,attr,omitempty"`
|
||||
|
@ -389,26 +449,26 @@ type xlsxF struct {
|
|||
// enforce when the sheet is protected.
|
||||
type xlsxSheetProtection struct {
|
||||
AlgorithmName string `xml:"algorithmName,attr,omitempty"`
|
||||
AutoFilter bool `xml:"autoFilter,attr,omitempty"`
|
||||
DeleteColumns bool `xml:"deleteColumns,attr,omitempty"`
|
||||
DeleteRows bool `xml:"deleteRows,attr,omitempty"`
|
||||
Password string `xml:"password,attr,omitempty"`
|
||||
HashValue string `xml:"hashValue,attr,omitempty"`
|
||||
SaltValue string `xml:"saltValue,attr,omitempty"`
|
||||
SpinCount int `xml:"spinCount,attr,omitempty"`
|
||||
Sheet bool `xml:"sheet,attr,omitempty"`
|
||||
Objects bool `xml:"objects,attr,omitempty"`
|
||||
Scenarios bool `xml:"scenarios,attr,omitempty"`
|
||||
FormatCells bool `xml:"formatCells,attr,omitempty"`
|
||||
FormatColumns bool `xml:"formatColumns,attr,omitempty"`
|
||||
FormatRows bool `xml:"formatRows,attr,omitempty"`
|
||||
HashValue string `xml:"hashValue,attr,omitempty"`
|
||||
InsertColumns bool `xml:"insertColumns,attr,omitempty"`
|
||||
InsertHyperlinks bool `xml:"insertHyperlinks,attr,omitempty"`
|
||||
InsertRows bool `xml:"insertRows,attr,omitempty"`
|
||||
Objects bool `xml:"objects,attr,omitempty"`
|
||||
Password string `xml:"password,attr,omitempty"`
|
||||
PivotTables bool `xml:"pivotTables,attr,omitempty"`
|
||||
SaltValue string `xml:"saltValue,attr,omitempty"`
|
||||
Scenarios bool `xml:"scenarios,attr,omitempty"`
|
||||
InsertHyperlinks bool `xml:"insertHyperlinks,attr,omitempty"`
|
||||
DeleteColumns bool `xml:"deleteColumns,attr,omitempty"`
|
||||
DeleteRows bool `xml:"deleteRows,attr,omitempty"`
|
||||
SelectLockedCells bool `xml:"selectLockedCells,attr,omitempty"`
|
||||
SelectUnlockedCells bool `xml:"selectUnlockedCells,attr,omitempty"`
|
||||
Sheet bool `xml:"sheet,attr,omitempty"`
|
||||
Sort bool `xml:"sort,attr,omitempty"`
|
||||
SpinCount int `xml:"spinCount,attr,omitempty"`
|
||||
AutoFilter bool `xml:"autoFilter,attr,omitempty"`
|
||||
PivotTables bool `xml:"pivotTables,attr,omitempty"`
|
||||
SelectUnlockedCells bool `xml:"selectUnlockedCells,attr,omitempty"`
|
||||
}
|
||||
|
||||
// xlsxPhoneticPr (Phonetic Properties) represents a collection of phonetic
|
||||
|
|
Loading…
Reference in New Issue