- 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:
xuri 2019-06-05 22:06:15 +08:00
parent db99373b25
commit cff16fa811
No known key found for this signature in database
GPG Key ID: BA5E5BB1C948EDF7
8 changed files with 296 additions and 170 deletions

View File

@ -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
docProps.go Executable file → Normal file
View File

56
docProps_test.go Normal file
View File

@ -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")
}

View File

@ -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) {

View File

@ -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"`

0
xmlCore.go Executable file → Normal file
View File

0
xmlDrawing.go Executable file → Normal file
View File

View File

@ -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