2022-01-09 00:20:42 +08:00
|
|
|
// Copyright 2016 - 2022 The excelize Authors. All rights reserved. Use of
|
2018-09-14 00:44:23 +08:00
|
|
|
// this source code is governed by a BSD-style license that can be found in
|
|
|
|
// the LICENSE file.
|
|
|
|
//
|
2022-02-17 00:09:11 +08:00
|
|
|
// Package excelize providing a set of functions that allow you to write to and
|
|
|
|
// read from XLAM / XLSM / XLSX / XLTM / XLTX files. Supports reading and
|
|
|
|
// writing spreadsheet documents generated by Microsoft Excel™ 2007 and later.
|
|
|
|
// Supports complex components by high compatibility, and provided streaming
|
|
|
|
// API for generating or reading data from a worksheet with huge amounts of
|
|
|
|
// data. This library needs Go version 1.15 or later.
|
2018-09-14 00:58:48 +08:00
|
|
|
|
2016-08-30 11:51:31 +08:00
|
|
|
package excelize
|
|
|
|
|
2021-07-06 00:31:04 +08:00
|
|
|
import (
|
|
|
|
"encoding/xml"
|
|
|
|
"sync"
|
|
|
|
)
|
2016-08-30 11:51:31 +08:00
|
|
|
|
2019-09-16 01:17:35 +08:00
|
|
|
// xlsxRelationships describe references from parts to other internal resources in the package or to external resources.
|
|
|
|
type xlsxRelationships struct {
|
2021-07-06 00:31:04 +08:00
|
|
|
sync.Mutex
|
2019-09-16 01:17:35 +08:00
|
|
|
XMLName xml.Name `xml:"http://schemas.openxmlformats.org/package/2006/relationships Relationships"`
|
|
|
|
Relationships []xlsxRelationship `xml:"Relationship"`
|
2016-08-30 11:51:31 +08:00
|
|
|
}
|
|
|
|
|
2019-09-16 01:17:35 +08:00
|
|
|
// xlsxRelationship contains relations which maps id and XML.
|
|
|
|
type xlsxRelationship struct {
|
2017-01-19 14:05:32 +08:00
|
|
|
ID string `xml:"Id,attr"`
|
|
|
|
Target string `xml:",attr"`
|
|
|
|
Type string `xml:",attr"`
|
|
|
|
TargetMode string `xml:",attr,omitempty"`
|
2016-08-30 11:51:31 +08:00
|
|
|
}
|
|
|
|
|
2020-07-11 02:31:02 +08:00
|
|
|
// xlsxWorkbook contains elements and attributes that encompass the data
|
|
|
|
// content of the workbook. The workbook's child elements each have their own
|
|
|
|
// subclause references.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxWorkbook struct {
|
2022-03-05 14:48:34 +08:00
|
|
|
XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main workbook"`
|
|
|
|
Conformance string `xml:"conformance,attr,omitempty"`
|
|
|
|
FileVersion *xlsxFileVersion `xml:"fileVersion"`
|
|
|
|
FileSharing *xlsxExtLst `xml:"fileSharing"`
|
|
|
|
WorkbookPr *xlsxWorkbookPr `xml:"workbookPr"`
|
2022-03-07 00:07:03 +08:00
|
|
|
AlternateContent *xlsxAlternateContent `xml:"mc:AlternateContent"`
|
|
|
|
DecodeAlternateContent *xlsxInnerXML `xml:"http://schemas.openxmlformats.org/markup-compatibility/2006 AlternateContent"`
|
2022-04-06 00:03:22 +08:00
|
|
|
WorkbookProtection *xlsxWorkbookProtection `xml:"workbookProtection"`
|
2022-03-05 14:48:34 +08:00
|
|
|
BookViews *xlsxBookViews `xml:"bookViews"`
|
|
|
|
Sheets xlsxSheets `xml:"sheets"`
|
|
|
|
FunctionGroups *xlsxExtLst `xml:"functionGroups"`
|
|
|
|
ExternalReferences *xlsxExternalReferences `xml:"externalReferences"`
|
|
|
|
DefinedNames *xlsxDefinedNames `xml:"definedNames"`
|
|
|
|
CalcPr *xlsxCalcPr `xml:"calcPr"`
|
|
|
|
OleSize *xlsxExtLst `xml:"oleSize"`
|
|
|
|
CustomWorkbookViews *xlsxCustomWorkbookViews `xml:"customWorkbookViews"`
|
|
|
|
PivotCaches *xlsxPivotCaches `xml:"pivotCaches"`
|
|
|
|
SmartTagPr *xlsxExtLst `xml:"smartTagPr"`
|
|
|
|
SmartTagTypes *xlsxExtLst `xml:"smartTagTypes"`
|
|
|
|
WebPublishing *xlsxExtLst `xml:"webPublishing"`
|
|
|
|
FileRecoveryPr *xlsxFileRecoveryPr `xml:"fileRecoveryPr"`
|
|
|
|
WebPublishObjects *xlsxExtLst `xml:"webPublishObjects"`
|
|
|
|
ExtLst *xlsxExtLst `xml:"extLst"`
|
2016-12-31 23:47:30 +08:00
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxFileRecoveryPr maps sheet recovery information. This element defines
|
|
|
|
// properties that track the state of the workbook file, such as whether the
|
|
|
|
// file was saved during a crash, or whether it should be opened in auto-recover
|
|
|
|
// mode.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxFileRecoveryPr struct {
|
2016-12-31 23:47:30 +08:00
|
|
|
AutoRecover bool `xml:"autoRecover,attr,omitempty"`
|
|
|
|
CrashSave bool `xml:"crashSave,attr,omitempty"`
|
|
|
|
DataExtractLoad bool `xml:"dataExtractLoad,attr,omitempty"`
|
|
|
|
RepairLoad bool `xml:"repairLoad,attr,omitempty"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxWorkbookProtection directly maps the workbookProtection element. This
|
|
|
|
// element specifies options for protecting data in the workbook. Applications
|
|
|
|
// might use workbook protection to prevent anyone from accidentally changing,
|
|
|
|
// moving, or deleting important data. This protection can be ignored by
|
|
|
|
// applications which choose not to support this optional protection mechanism.
|
|
|
|
// When a password is to be hashed and stored in this element, it shall be
|
|
|
|
// hashed as defined below, starting from a UTF-16LE encoded string value. If
|
|
|
|
// there is a leading BOM character (U+FEFF) in the encoded password it is
|
|
|
|
// removed before hash calculation.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxWorkbookProtection struct {
|
2016-12-31 23:47:30 +08:00
|
|
|
LockRevision bool `xml:"lockRevision,attr,omitempty"`
|
|
|
|
LockStructure bool `xml:"lockStructure,attr,omitempty"`
|
|
|
|
LockWindows bool `xml:"lockWindows,attr,omitempty"`
|
|
|
|
RevisionsAlgorithmName string `xml:"revisionsAlgorithmName,attr,omitempty"`
|
|
|
|
RevisionsHashValue string `xml:"revisionsHashValue,attr,omitempty"`
|
|
|
|
RevisionsSaltValue string `xml:"revisionsSaltValue,attr,omitempty"`
|
|
|
|
RevisionsSpinCount int `xml:"revisionsSpinCount,attr,omitempty"`
|
|
|
|
WorkbookAlgorithmName string `xml:"workbookAlgorithmName,attr,omitempty"`
|
|
|
|
WorkbookHashValue string `xml:"workbookHashValue,attr,omitempty"`
|
|
|
|
WorkbookSaltValue string `xml:"workbookSaltValue,attr,omitempty"`
|
|
|
|
WorkbookSpinCount int `xml:"workbookSpinCount,attr,omitempty"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxFileVersion directly maps the fileVersion element. This element defines
|
|
|
|
// properties that track which version of the application accessed the data and
|
|
|
|
// source code contained in the file.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxFileVersion struct {
|
|
|
|
AppName string `xml:"appName,attr,omitempty"`
|
2016-12-31 23:47:30 +08:00
|
|
|
CodeName string `xml:"codeName,attr,omitempty"`
|
2016-08-30 11:51:31 +08:00
|
|
|
LastEdited string `xml:"lastEdited,attr,omitempty"`
|
|
|
|
LowestEdited string `xml:"lowestEdited,attr,omitempty"`
|
|
|
|
RupBuild string `xml:"rupBuild,attr,omitempty"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxWorkbookPr directly maps the workbookPr element from the namespace
|
|
|
|
// http://schemas.openxmlformats.org/spreadsheetml/2006/main This element
|
|
|
|
// defines a collection of workbook properties.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxWorkbookPr struct {
|
2016-12-31 23:47:30 +08:00
|
|
|
Date1904 bool `xml:"date1904,attr,omitempty"`
|
2022-02-17 00:09:11 +08:00
|
|
|
ShowObjects string `xml:"showObjects,attr,omitempty"`
|
|
|
|
ShowBorderUnselectedTables *bool `xml:"showBorderUnselectedTables,attr"`
|
2016-12-31 23:47:30 +08:00
|
|
|
FilterPrivacy bool `xml:"filterPrivacy,attr,omitempty"`
|
|
|
|
PromptedSolutions bool `xml:"promptedSolutions,attr,omitempty"`
|
2022-02-17 00:09:11 +08:00
|
|
|
ShowInkAnnotation *bool `xml:"showInkAnnotation,attr"`
|
|
|
|
BackupFile bool `xml:"backupFile,attr,omitempty"`
|
|
|
|
SaveExternalLinkValues *bool `xml:"saveExternalLinkValues,attr"`
|
|
|
|
UpdateLinks string `xml:"updateLinks,attr,omitempty"`
|
|
|
|
CodeName string `xml:"codeName,attr,omitempty"`
|
|
|
|
HidePivotFieldList bool `xml:"hidePivotFieldList,attr,omitempty"`
|
|
|
|
ShowPivotChartFilter bool `xml:"showPivotChartFilter,attr,omitempty"`
|
|
|
|
AllowRefreshQuery bool `xml:"allowRefreshQuery,attr,omitempty"`
|
2016-12-31 23:47:30 +08:00
|
|
|
PublishItems bool `xml:"publishItems,attr,omitempty"`
|
2022-02-17 00:09:11 +08:00
|
|
|
CheckCompatibility bool `xml:"checkCompatibility,attr,omitempty"`
|
|
|
|
AutoCompressPictures *bool `xml:"autoCompressPictures,attr"`
|
2016-12-31 23:47:30 +08:00
|
|
|
RefreshAllConnections bool `xml:"refreshAllConnections,attr,omitempty"`
|
2022-02-17 00:09:11 +08:00
|
|
|
DefaultThemeVersion string `xml:"defaultThemeVersion,attr,omitempty"`
|
2016-12-31 23:47:30 +08:00
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxBookViews directly maps the bookViews element. This element specifies the
|
|
|
|
// collection of workbook views of the enclosing workbook. Each view can specify
|
|
|
|
// a window position, filter options, and other configurations. There is no
|
|
|
|
// limit on the number of workbook views that can be defined for a workbook.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxBookViews struct {
|
|
|
|
WorkBookView []xlsxWorkBookView `xml:"workbookView"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxWorkBookView directly maps the workbookView element from the namespace
|
|
|
|
// http://schemas.openxmlformats.org/spreadsheetml/2006/main This element
|
|
|
|
// specifies a single Workbook view.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxWorkBookView struct {
|
2016-12-31 23:47:30 +08:00
|
|
|
Visibility string `xml:"visibility,attr,omitempty"`
|
2022-02-26 21:32:57 +08:00
|
|
|
Minimized bool `xml:"minimized,attr,omitempty"`
|
|
|
|
ShowHorizontalScroll *bool `xml:"showHorizontalScroll,attr"`
|
|
|
|
ShowVerticalScroll *bool `xml:"showVerticalScroll,attr"`
|
|
|
|
ShowSheetTabs *bool `xml:"showSheetTabs,attr"`
|
2016-12-31 23:47:30 +08:00
|
|
|
XWindow string `xml:"xWindow,attr,omitempty"`
|
|
|
|
YWindow string `xml:"yWindow,attr,omitempty"`
|
2022-02-26 21:32:57 +08:00
|
|
|
WindowWidth int `xml:"windowWidth,attr,omitempty"`
|
|
|
|
WindowHeight int `xml:"windowHeight,attr,omitempty"`
|
|
|
|
TabRatio int `xml:"tabRatio,attr,omitempty"`
|
|
|
|
FirstSheet int `xml:"firstSheet,attr,omitempty"`
|
|
|
|
ActiveTab int `xml:"activeTab,attr,omitempty"`
|
|
|
|
AutoFilterDateGrouping *bool `xml:"autoFilterDateGrouping,attr"`
|
2016-08-30 11:51:31 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxSheets directly maps the sheets element from the namespace
|
2016-12-31 23:47:30 +08:00
|
|
|
// http://schemas.openxmlformats.org/spreadsheetml/2006/main.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxSheets struct {
|
|
|
|
Sheet []xlsxSheet `xml:"sheet"`
|
|
|
|
}
|
|
|
|
|
2019-05-17 22:58:12 +08:00
|
|
|
// xlsxSheet defines a sheet in this workbook. Sheet data is stored in a
|
|
|
|
// separate part.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxSheet struct {
|
|
|
|
Name string `xml:"name,attr,omitempty"`
|
2018-12-15 00:08:55 +08:00
|
|
|
SheetID int `xml:"sheetId,attr,omitempty"`
|
2020-07-11 02:31:02 +08:00
|
|
|
ID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr"`
|
2016-08-30 11:51:31 +08:00
|
|
|
State string `xml:"state,attr,omitempty"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxExternalReferences directly maps the externalReferences element of the
|
|
|
|
// external workbook references part.
|
2016-12-26 18:06:12 +08:00
|
|
|
type xlsxExternalReferences struct {
|
|
|
|
ExternalReference []xlsxExternalReference `xml:"externalReference"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxExternalReference directly maps the externalReference element of the
|
|
|
|
// external workbook references part.
|
2016-12-26 18:06:12 +08:00
|
|
|
type xlsxExternalReference struct {
|
|
|
|
RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxPivotCaches element enumerates pivot cache definition parts used by pivot
|
|
|
|
// tables and formulas in this workbook.
|
2016-12-26 18:06:12 +08:00
|
|
|
type xlsxPivotCaches struct {
|
|
|
|
PivotCache []xlsxPivotCache `xml:"pivotCache"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxPivotCache directly maps the pivotCache element.
|
|
|
|
type xlsxPivotCache struct {
|
2019-06-01 15:37:47 +08:00
|
|
|
CacheID int `xml:"cacheId,attr"`
|
2016-12-26 18:06:12 +08:00
|
|
|
RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// extLst element provides a convention for extending spreadsheetML in
|
2017-01-18 16:05:01 +08:00
|
|
|
// predefined locations. The locations shall be denoted with the extLst element,
|
|
|
|
// and are called extension lists. Extension list locations within the markup
|
|
|
|
// document are specified in the markup specification and can be used to store
|
|
|
|
// extensions to the markup specification, whether those are future version
|
|
|
|
// extensions of the markup specification or are private extensions implemented
|
|
|
|
// independently from the markup specification. Markup within an extension might
|
|
|
|
// not be understood by a consumer.
|
2016-12-26 18:06:12 +08:00
|
|
|
type xlsxExtLst struct {
|
|
|
|
Ext string `xml:",innerxml"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxDefinedNames directly maps the definedNames element. This element defines
|
|
|
|
// the collection of defined names for this workbook. Defined names are
|
|
|
|
// descriptive names to represent cells, ranges of cells, formulas, or constant
|
|
|
|
// values. Defined names can be used to represent a range on any worksheet.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxDefinedNames struct {
|
|
|
|
DefinedName []xlsxDefinedName `xml:"definedName"`
|
|
|
|
}
|
|
|
|
|
2017-01-18 16:05:01 +08:00
|
|
|
// xlsxDefinedName directly maps the definedName element from the namespace
|
|
|
|
// http://schemas.openxmlformats.org/spreadsheetml/2006/main This element
|
|
|
|
// defines a defined name within this workbook. A defined name is descriptive
|
|
|
|
// text that is used to represents a cell, range of cells, formula, or constant
|
2022-11-29 00:03:49 +08:00
|
|
|
// value. For a descriptions of the attributes see https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.definedname
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxDefinedName struct {
|
|
|
|
Comment string `xml:"comment,attr,omitempty"`
|
|
|
|
CustomMenu string `xml:"customMenu,attr,omitempty"`
|
|
|
|
Description string `xml:"description,attr,omitempty"`
|
2016-12-31 23:47:30 +08:00
|
|
|
Function bool `xml:"function,attr,omitempty"`
|
|
|
|
FunctionGroupID int `xml:"functionGroupId,attr,omitempty"`
|
2016-08-30 11:51:31 +08:00
|
|
|
Help string `xml:"help,attr,omitempty"`
|
2016-12-31 23:47:30 +08:00
|
|
|
Hidden bool `xml:"hidden,attr,omitempty"`
|
2017-07-16 13:03:45 +08:00
|
|
|
LocalSheetID *int `xml:"localSheetId,attr"`
|
2016-12-31 23:47:30 +08:00
|
|
|
Name string `xml:"name,attr,omitempty"`
|
|
|
|
PublishToServer bool `xml:"publishToServer,attr,omitempty"`
|
2016-08-30 11:51:31 +08:00
|
|
|
ShortcutKey string `xml:"shortcutKey,attr,omitempty"`
|
|
|
|
StatusBar string `xml:"statusBar,attr,omitempty"`
|
|
|
|
VbProcedure bool `xml:"vbProcedure,attr,omitempty"`
|
|
|
|
WorkbookParameter bool `xml:"workbookParameter,attr,omitempty"`
|
|
|
|
Xlm bool `xml:"xml,attr,omitempty"`
|
2016-12-31 23:47:30 +08:00
|
|
|
Data string `xml:",chardata"`
|
2016-08-30 11:51:31 +08:00
|
|
|
}
|
|
|
|
|
2016-12-31 23:47:30 +08:00
|
|
|
// xlsxCalcPr directly maps the calcPr element. This element defines the
|
2017-01-18 16:05:01 +08:00
|
|
|
// collection of properties the application uses to record calculation status
|
|
|
|
// and details. Calculation is the process of computing formulas and then
|
|
|
|
// displaying the results as values in the cells that contain the formulas.
|
2016-08-30 11:51:31 +08:00
|
|
|
type xlsxCalcPr struct {
|
2016-12-31 23:47:30 +08:00
|
|
|
CalcCompleted bool `xml:"calcCompleted,attr,omitempty"`
|
|
|
|
CalcID string `xml:"calcId,attr,omitempty"`
|
|
|
|
CalcMode string `xml:"calcMode,attr,omitempty"`
|
|
|
|
CalcOnSave bool `xml:"calcOnSave,attr,omitempty"`
|
2017-07-15 20:03:44 +08:00
|
|
|
ConcurrentCalc *bool `xml:"concurrentCalc,attr"`
|
2016-12-31 23:47:30 +08:00
|
|
|
ConcurrentManualCount int `xml:"concurrentManualCount,attr,omitempty"`
|
|
|
|
ForceFullCalc bool `xml:"forceFullCalc,attr,omitempty"`
|
|
|
|
FullCalcOnLoad bool `xml:"fullCalcOnLoad,attr,omitempty"`
|
|
|
|
FullPrecision bool `xml:"fullPrecision,attr,omitempty"`
|
|
|
|
Iterate bool `xml:"iterate,attr,omitempty"`
|
|
|
|
IterateCount int `xml:"iterateCount,attr,omitempty"`
|
|
|
|
IterateDelta float64 `xml:"iterateDelta,attr,omitempty"`
|
|
|
|
RefMode string `xml:"refMode,attr,omitempty"`
|
2016-08-30 11:51:31 +08:00
|
|
|
}
|
2017-11-16 17:31:01 +08:00
|
|
|
|
|
|
|
// xlsxCustomWorkbookViews defines the collection of custom workbook views that
|
|
|
|
// are defined for this workbook. A customWorkbookView is similar in concept to
|
|
|
|
// a workbookView in that its attributes contain settings related to the way
|
|
|
|
// that the workbook should be displayed on a screen by a spreadsheet
|
|
|
|
// application.
|
|
|
|
type xlsxCustomWorkbookViews struct {
|
|
|
|
CustomWorkbookView []xlsxCustomWorkbookView `xml:"customWorkbookView"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxCustomWorkbookView directly maps the customWorkbookView element. This
|
|
|
|
// element specifies a single custom workbook view. A custom workbook view
|
|
|
|
// consists of a set of display and print settings that you can name and apply
|
|
|
|
// to a workbook. You can create more than one custom workbook view of the same
|
|
|
|
// workbook. Custom Workbook Views are not required in order to construct a
|
|
|
|
// valid SpreadsheetML document, and are not necessary if the document is never
|
|
|
|
// displayed by a spreadsheet application, or if the spreadsheet application has
|
|
|
|
// a fixed display for workbooks. However, if a spreadsheet application chooses
|
|
|
|
// to implement configurable display modes, the customWorkbookView element
|
|
|
|
// should be used to persist the settings for those display modes.
|
|
|
|
type xlsxCustomWorkbookView struct {
|
|
|
|
ActiveSheetID *int `xml:"activeSheetId,attr"`
|
|
|
|
AutoUpdate *bool `xml:"autoUpdate,attr"`
|
|
|
|
ChangesSavedWin *bool `xml:"changesSavedWin,attr"`
|
|
|
|
GUID *string `xml:"guid,attr"`
|
|
|
|
IncludeHiddenRowCol *bool `xml:"includeHiddenRowCol,attr"`
|
|
|
|
IncludePrintSettings *bool `xml:"includePrintSettings,attr"`
|
|
|
|
Maximized *bool `xml:"maximized,attr"`
|
|
|
|
MergeInterval int `xml:"mergeInterval,attr"`
|
|
|
|
Minimized *bool `xml:"minimized,attr"`
|
|
|
|
Name *string `xml:"name,attr"`
|
|
|
|
OnlySync *bool `xml:"onlySync,attr"`
|
|
|
|
PersonalView *bool `xml:"personalView,attr"`
|
|
|
|
ShowComments *string `xml:"showComments,attr"`
|
|
|
|
ShowFormulaBar *bool `xml:"showFormulaBar,attr"`
|
|
|
|
ShowHorizontalScroll *bool `xml:"showHorizontalScroll,attr"`
|
|
|
|
ShowObjects *string `xml:"showObjects,attr"`
|
|
|
|
ShowSheetTabs *bool `xml:"showSheetTabs,attr"`
|
|
|
|
ShowStatusbar *bool `xml:"showStatusbar,attr"`
|
|
|
|
ShowVerticalScroll *bool `xml:"showVerticalScroll,attr"`
|
|
|
|
TabRatio *int `xml:"tabRatio,attr"`
|
|
|
|
WindowHeight *int `xml:"windowHeight,attr"`
|
|
|
|
WindowWidth *int `xml:"windowWidth,attr"`
|
|
|
|
XWindow *int `xml:"xWindow,attr"`
|
|
|
|
YWindow *int `xml:"yWindow,attr"`
|
|
|
|
}
|
2019-06-18 23:07:44 +08:00
|
|
|
|
|
|
|
// DefinedName directly maps the name for a cell or cell range on a
|
|
|
|
// worksheet.
|
|
|
|
type DefinedName struct {
|
Breaking change: changed the function signature for 11 exported functions
* Change
`func (f *File) NewConditionalStyle(style string) (int, error)`
to
`func (f *File) NewConditionalStyle(style *Style) (int, error)`
* Change
`func (f *File) NewStyle(style interface{}) (int, error)`
to
`func (f *File) NewStyle(style *Style) (int, error)`
* Change
`func (f *File) AddChart(sheet, cell, opts string, combo ...string) error`
to
`func (f *File) AddChart(sheet, cell string, chart *ChartOptions, combo ...*ChartOptions) error`
* Change
`func (f *File) AddChartSheet(sheet, opts string, combo ...string) error`
to
`func (f *File) AddChartSheet(sheet string, chart *ChartOptions, combo ...*ChartOptions) error`
* Change
`func (f *File) AddShape(sheet, cell, opts string) error`
to
`func (f *File) AddShape(sheet, cell string, opts *Shape) error`
* Change
`func (f *File) AddPictureFromBytes(sheet, cell, opts, name, extension string, file []byte) error`
to
`func (f *File) AddPictureFromBytes(sheet, cell, name, extension string, file []byte, opts *PictureOptions) error`
* Change
`func (f *File) AddTable(sheet, hCell, vCell, opts string) error`
to
`func (f *File) AddTable(sheet, reference string, opts *TableOptions) error`
* Change
`func (sw *StreamWriter) AddTable(hCell, vCell, opts string) error`
to
`func (sw *StreamWriter) AddTable(reference string, opts *TableOptions) error`
* Change
`func (f *File) AutoFilter(sheet, hCell, vCell, opts string) error`
to
`func (f *File) AutoFilter(sheet, reference string, opts *AutoFilterOptions) error`
* Change
`func (f *File) SetPanes(sheet, panes string) error`
to
`func (f *File) SetPanes(sheet string, panes *Panes) error`
* Change
`func (sw *StreamWriter) AddTable(hCell, vCell, opts string) error`
to
`func (sw *StreamWriter) AddTable(reference string, opts *TableOptions) error`
* Change
`func (f *File) SetConditionalFormat(sheet, reference, opts string) error`
to
`func (f *File) SetConditionalFormat(sheet, reference string, opts []ConditionalFormatOptions) error`
* Add exported types:
* AutoFilterListOptions
* AutoFilterOptions
* Chart
* ChartAxis
* ChartDimension
* ChartLegend
* ChartLine
* ChartMarker
* ChartPlotArea
* ChartSeries
* ChartTitle
* ConditionalFormatOptions
* PaneOptions
* Panes
* PictureOptions
* Shape
* ShapeColor
* ShapeLine
* ShapeParagraph
* TableOptions
* This added support for set sheet visible as very hidden
* Return error when missing required parameters for set defined name
* Update unit test and comments
2022-12-30 00:50:08 +08:00
|
|
|
Name string
|
|
|
|
Comment string
|
|
|
|
RefersTo string
|
|
|
|
Scope string
|
This closes #1358, made a refactor with breaking changes, see details:
This made a refactor with breaking changes:
Motivation and Context
When I decided to add set horizontal centered support for this library to resolve #1358, the reason I made this huge breaking change was:
- There are too many exported types for set sheet view, properties, and format properties, although a function using the functional options pattern can be optimized by returning an anonymous function, these types or property set or get function has no binding categorization, so I change these functions like `SetAppProps` to accept a pointer of options structure.
- Users can not easily find out which properties should be in the `SetSheetPrOptions` or `SetSheetFormatPr` categories
- Nested properties cannot proceed modify easily
Introduce 5 new export data types:
`HeaderFooterOptions`, `PageLayoutMarginsOptions`, `PageLayoutOptions`, `SheetPropsOptions`, and `ViewOptions`
Rename 4 exported data types:
- Rename `PivotTableOption` to `PivotTableOptions`
- Rename `FormatHeaderFooter` to `HeaderFooterOptions`
- Rename `FormatSheetProtection` to `SheetProtectionOptions`
- Rename `SparklineOption` to `SparklineOptions`
Remove 54 exported types:
`AutoPageBreaks`, `BaseColWidth`, `BlackAndWhite`, `CodeName`, `CustomHeight`, `Date1904`, `DefaultColWidth`, `DefaultGridColor`, `DefaultRowHeight`, `EnableFormatConditionsCalculation`, `FilterPrivacy`, `FirstPageNumber`, `FitToHeight`, `FitToPage`, `FitToWidth`, `OutlineSummaryBelow`, `PageLayoutOption`, `PageLayoutOptionPtr`, `PageLayoutOrientation`, `PageLayoutPaperSize`, `PageLayoutScale`, `PageMarginBottom`, `PageMarginFooter`, `PageMarginHeader`, `PageMarginLeft`, `PageMarginRight`, `PageMarginsOptions`, `PageMarginsOptionsPtr`, `PageMarginTop`, `Published`, `RightToLeft`, `SheetFormatPrOptions`, `SheetFormatPrOptionsPtr`, `SheetPrOption`, `SheetPrOptionPtr`, `SheetViewOption`, `SheetViewOptionPtr`, `ShowFormulas`, `ShowGridLines`, `ShowRowColHeaders`, `ShowRuler`, `ShowZeros`, `TabColorIndexed`, `TabColorRGB`, `TabColorTheme`, `TabColorTint`, `ThickBottom`, `ThickTop`, `TopLeftCell`, `View`, `WorkbookPrOption`, `WorkbookPrOptionPtr`, `ZeroHeight` and `ZoomScale`
Remove 2 exported constants:
`OrientationPortrait` and `OrientationLandscape`
Change 8 functions:
- Change the `func (f *File) SetPageLayout(sheet string, opts ...PageLayoutOption) error` to `func (f *File) SetPageLayout(sheet string, opts *PageLayoutOptions) error`
- Change the `func (f *File) GetPageLayout(sheet string, opts ...PageLayoutOptionPtr) error` to `func (f *File) GetPageLayout(sheet string) (PageLayoutOptions, error)`
- Change the `func (f *File) SetPageMargins(sheet string, opts ...PageMarginsOptions) error` to `func (f *File) SetPageMargins(sheet string, opts *PageLayoutMarginsOptions) error`
- Change the `func (f *File) GetPageMargins(sheet string, opts ...PageMarginsOptionsPtr) error` to `func (f *File) GetPageMargins(sheet string) (PageLayoutMarginsOptions, error)`
- Change the `func (f *File) SetSheetViewOptions(sheet string, viewIndex int, opts ...SheetViewOption) error` to `func (f *File) SetSheetView(sheet string, viewIndex int, opts *ViewOptions) error`
- Change the `func (f *File) GetSheetViewOptions(sheet string, viewIndex int, opts ...SheetViewOptionPtr) error` to `func (f *File) GetSheetView(sheet string, viewIndex int) (ViewOptions, error)`
- Change the `func (f *File) SetWorkbookPrOptions(opts ...WorkbookPrOption) error` to `func (f *File) SetWorkbookProps(opts *WorkbookPropsOptions) error`
- Change the `func (f *File) GetWorkbookPrOptions(opts ...WorkbookPrOptionPtr) error` to `func (f *File) GetWorkbookProps() (WorkbookPropsOptions, error)`
Introduce new function to instead of existing functions:
- New function `func (f *File) SetSheetProps(sheet string, opts *SheetPropsOptions) error` instead of `func (f *File) SetSheetPrOptions(sheet string, opts ...SheetPrOption) error` and `func (f *File) SetSheetFormatPr(sheet string, opts ...SheetFormatPrOption
2022-09-29 22:00:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// WorkbookPropsOptions directly maps the settings of workbook proprieties.
|
|
|
|
type WorkbookPropsOptions struct {
|
Breaking change: changed the function signature for 11 exported functions
* Change
`func (f *File) NewConditionalStyle(style string) (int, error)`
to
`func (f *File) NewConditionalStyle(style *Style) (int, error)`
* Change
`func (f *File) NewStyle(style interface{}) (int, error)`
to
`func (f *File) NewStyle(style *Style) (int, error)`
* Change
`func (f *File) AddChart(sheet, cell, opts string, combo ...string) error`
to
`func (f *File) AddChart(sheet, cell string, chart *ChartOptions, combo ...*ChartOptions) error`
* Change
`func (f *File) AddChartSheet(sheet, opts string, combo ...string) error`
to
`func (f *File) AddChartSheet(sheet string, chart *ChartOptions, combo ...*ChartOptions) error`
* Change
`func (f *File) AddShape(sheet, cell, opts string) error`
to
`func (f *File) AddShape(sheet, cell string, opts *Shape) error`
* Change
`func (f *File) AddPictureFromBytes(sheet, cell, opts, name, extension string, file []byte) error`
to
`func (f *File) AddPictureFromBytes(sheet, cell, name, extension string, file []byte, opts *PictureOptions) error`
* Change
`func (f *File) AddTable(sheet, hCell, vCell, opts string) error`
to
`func (f *File) AddTable(sheet, reference string, opts *TableOptions) error`
* Change
`func (sw *StreamWriter) AddTable(hCell, vCell, opts string) error`
to
`func (sw *StreamWriter) AddTable(reference string, opts *TableOptions) error`
* Change
`func (f *File) AutoFilter(sheet, hCell, vCell, opts string) error`
to
`func (f *File) AutoFilter(sheet, reference string, opts *AutoFilterOptions) error`
* Change
`func (f *File) SetPanes(sheet, panes string) error`
to
`func (f *File) SetPanes(sheet string, panes *Panes) error`
* Change
`func (sw *StreamWriter) AddTable(hCell, vCell, opts string) error`
to
`func (sw *StreamWriter) AddTable(reference string, opts *TableOptions) error`
* Change
`func (f *File) SetConditionalFormat(sheet, reference, opts string) error`
to
`func (f *File) SetConditionalFormat(sheet, reference string, opts []ConditionalFormatOptions) error`
* Add exported types:
* AutoFilterListOptions
* AutoFilterOptions
* Chart
* ChartAxis
* ChartDimension
* ChartLegend
* ChartLine
* ChartMarker
* ChartPlotArea
* ChartSeries
* ChartTitle
* ConditionalFormatOptions
* PaneOptions
* Panes
* PictureOptions
* Shape
* ShapeColor
* ShapeLine
* ShapeParagraph
* TableOptions
* This added support for set sheet visible as very hidden
* Return error when missing required parameters for set defined name
* Update unit test and comments
2022-12-30 00:50:08 +08:00
|
|
|
Date1904 *bool
|
|
|
|
FilterPrivacy *bool
|
|
|
|
CodeName *string
|
2019-06-18 23:07:44 +08:00
|
|
|
}
|
2022-12-27 00:06:18 +08:00
|
|
|
|
|
|
|
// WorkbookProtectionOptions directly maps the settings of workbook protection.
|
|
|
|
type WorkbookProtectionOptions struct {
|
Breaking change: changed the function signature for 11 exported functions
* Change
`func (f *File) NewConditionalStyle(style string) (int, error)`
to
`func (f *File) NewConditionalStyle(style *Style) (int, error)`
* Change
`func (f *File) NewStyle(style interface{}) (int, error)`
to
`func (f *File) NewStyle(style *Style) (int, error)`
* Change
`func (f *File) AddChart(sheet, cell, opts string, combo ...string) error`
to
`func (f *File) AddChart(sheet, cell string, chart *ChartOptions, combo ...*ChartOptions) error`
* Change
`func (f *File) AddChartSheet(sheet, opts string, combo ...string) error`
to
`func (f *File) AddChartSheet(sheet string, chart *ChartOptions, combo ...*ChartOptions) error`
* Change
`func (f *File) AddShape(sheet, cell, opts string) error`
to
`func (f *File) AddShape(sheet, cell string, opts *Shape) error`
* Change
`func (f *File) AddPictureFromBytes(sheet, cell, opts, name, extension string, file []byte) error`
to
`func (f *File) AddPictureFromBytes(sheet, cell, name, extension string, file []byte, opts *PictureOptions) error`
* Change
`func (f *File) AddTable(sheet, hCell, vCell, opts string) error`
to
`func (f *File) AddTable(sheet, reference string, opts *TableOptions) error`
* Change
`func (sw *StreamWriter) AddTable(hCell, vCell, opts string) error`
to
`func (sw *StreamWriter) AddTable(reference string, opts *TableOptions) error`
* Change
`func (f *File) AutoFilter(sheet, hCell, vCell, opts string) error`
to
`func (f *File) AutoFilter(sheet, reference string, opts *AutoFilterOptions) error`
* Change
`func (f *File) SetPanes(sheet, panes string) error`
to
`func (f *File) SetPanes(sheet string, panes *Panes) error`
* Change
`func (sw *StreamWriter) AddTable(hCell, vCell, opts string) error`
to
`func (sw *StreamWriter) AddTable(reference string, opts *TableOptions) error`
* Change
`func (f *File) SetConditionalFormat(sheet, reference, opts string) error`
to
`func (f *File) SetConditionalFormat(sheet, reference string, opts []ConditionalFormatOptions) error`
* Add exported types:
* AutoFilterListOptions
* AutoFilterOptions
* Chart
* ChartAxis
* ChartDimension
* ChartLegend
* ChartLine
* ChartMarker
* ChartPlotArea
* ChartSeries
* ChartTitle
* ConditionalFormatOptions
* PaneOptions
* Panes
* PictureOptions
* Shape
* ShapeColor
* ShapeLine
* ShapeParagraph
* TableOptions
* This added support for set sheet visible as very hidden
* Return error when missing required parameters for set defined name
* Update unit test and comments
2022-12-30 00:50:08 +08:00
|
|
|
AlgorithmName string
|
|
|
|
Password string
|
|
|
|
LockStructure bool
|
|
|
|
LockWindows bool
|
2022-12-27 00:06:18 +08:00
|
|
|
}
|