diff options
author | Ri Xu <xuri.me@gmail.com> | 2016-12-31 23:47:30 +0800 |
---|---|---|
committer | Ri Xu <xuri.me@gmail.com> | 2016-12-31 23:47:30 +0800 |
commit | 9e8d36ce59381eadb934585a179c4c6d7f871b35 (patch) | |
tree | 94d35ae9a09527b0cbc4be8a90850423bf61d4a6 /xmlWorkbook.go | |
parent | f958f05a3bf6f9fdc7f76539d9a3b24f49cc2694 (diff) |
- Performance improvement, remove `replaceRelationshipsID` and `workBookCompatibility` functions;
- New functions `GetActiveSheetIndex`, `GetSheetName` and `GetSheetMap` added.
Diffstat (limited to 'xmlWorkbook.go')
-rw-r--r-- | xmlWorkbook.go | 210 |
1 files changed, 126 insertions, 84 deletions
diff --git a/xmlWorkbook.go b/xmlWorkbook.go index c196900..6ba7b53 100644 --- a/xmlWorkbook.go +++ b/xmlWorkbook.go @@ -1,5 +1,3 @@ -// Some code of this file reference tealeg/xlsx. - package excelize import "encoding/xml" @@ -13,7 +11,7 @@ const ( ) // xmlxWorkbookRels contains xmlxWorkbookRelations -// which maps sheet id and sheet XML +// which maps sheet id and sheet XML. type xlsxWorkbookRels struct { XMLName xml.Name `xml:"http://schemas.openxmlformats.org/package/2006/relationships Relationships"` Relationships []xlsxWorkbookRelation `xml:"Relationship"` @@ -31,39 +29,61 @@ type xlsxWorkbookRelation struct { // currently I have not checked it for completeness - it does as much // as I need. type xlsxWorkbook struct { - XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main workbook"` - FileVersion xlsxFileVersion `xml:"fileVersion"` - WorkbookPr xlsxWorkbookPr `xml:"workbookPr"` - WorkbookProtection xlsxWorkbookProtection `xml:"workbookProtection"` - BookViews xlsxBookViews `xml:"bookViews"` - Sheets xlsxSheets `xml:"sheets"` - ExternalReferences xlsxExternalReferences `xml:"externalReferences"` - DefinedNames xlsxDefinedNames `xml:"definedNames"` - CalcPr xlsxCalcPr `xml:"calcPr"` - PivotCaches xlsxPivotCaches `xml:"pivotCaches"` - ExtLst xlsxExtLst `xml:"extLst"` - FileRecoveryPr xlsxFileRecoveryPr `xml:"fileRecoveryPr"` -} - -// xlsxFileRecoveryPr maps sheet recovery information. + XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main workbook"` + FileVersion *xlsxFileVersion `xml:"fileVersion"` + WorkbookPr *xlsxWorkbookPr `xml:"workbookPr"` + WorkbookProtection *xlsxWorkbookProtection `xml:"workbookProtection"` + BookViews xlsxBookViews `xml:"bookViews"` + Sheets xlsxSheets `xml:"sheets"` + ExternalReferences *xlsxExternalReferences `xml:"externalReferences"` + DefinedNames *xlsxDefinedNames `xml:"definedNames"` + CalcPr *xlsxCalcPr `xml:"calcPr"` + PivotCaches *xlsxPivotCaches `xml:"pivotCaches"` + ExtLst *xlsxExtLst `xml:"extLst"` + FileRecoveryPr *xlsxFileRecoveryPr `xml:"fileRecoveryPr"` +} + +// 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. type xlsxFileRecoveryPr struct { - RepairLoad int `xml:"repairLoad,attr,omitempty"` -} - -// xlsxWorkbookProtection directly maps the workbookProtection element from the -// namespace http://schemas.openxmlformats.org/spreadsheetml/2006/main -// - currently I have not checked it for completeness - it does as -// much as I need. + AutoRecover bool `xml:"autoRecover,attr,omitempty"` + CrashSave bool `xml:"crashSave,attr,omitempty"` + DataExtractLoad bool `xml:"dataExtractLoad,attr,omitempty"` + RepairLoad bool `xml:"repairLoad,attr,omitempty"` +} + +// 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. type xlsxWorkbookProtection struct { - // We don't need this, yet. -} - -// xlsxFileVersion directly maps the fileVersion element from the -// namespace http://schemas.openxmlformats.org/spreadsheetml/2006/main -// - currently I have not checked it for completeness - it does as -// much as I need. + 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"` +} + +// 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. type xlsxFileVersion struct { AppName string `xml:"appName,attr,omitempty"` + CodeName string `xml:"codeName,attr,omitempty"` LastEdited string `xml:"lastEdited,attr,omitempty"` LowestEdited string `xml:"lowestEdited,attr,omitempty"` RupBuild string `xml:"rupBuild,attr,omitempty"` @@ -71,45 +91,57 @@ type xlsxFileVersion struct { // xlsxWorkbookPr directly maps the workbookPr element from the // namespace http://schemas.openxmlformats.org/spreadsheetml/2006/main -// - currently I have not checked it for completeness - it does as -// much as I need. +// This element defines a collection of workbook properties. type xlsxWorkbookPr struct { - DefaultThemeVersion string `xml:"defaultThemeVersion,attr,omitempty"` - BackupFile bool `xml:"backupFile,attr,omitempty"` - ShowObjects string `xml:"showObjects,attr,omitempty"` - Date1904 bool `xml:"date1904,attr,omitempty"` - CodeName string `xml:"codeName,attr,omitempty"` -} - -// xlsxBookViews directly maps the bookViews element from the -// namespace http://schemas.openxmlformats.org/spreadsheetml/2006/main -// - currently I have not checked it for completeness - it does as -// much as I need. + AllowRefreshQuery bool `xml:"allowRefreshQuery,attr,omitempty"` + AutoCompressPictures bool `xml:"autoCompressPictures,attr,omitempty"` + BackupFile bool `xml:"backupFile,attr,omitempty"` + CheckCompatibility bool `xml:"checkCompatibility,attr,omitempty"` + CodeName string `xml:"codeName,attr,omitempty"` + Date1904 bool `xml:"date1904,attr,omitempty"` + DefaultThemeVersion string `xml:"defaultThemeVersion,attr,omitempty"` + FilterPrivacy bool `xml:"filterPrivacy,attr,omitempty"` + HidePivotFieldList bool `xml:"hidePivotFieldList,attr,omitempty"` + PromptedSolutions bool `xml:"promptedSolutions,attr,omitempty"` + PublishItems bool `xml:"publishItems,attr,omitempty"` + RefreshAllConnections bool `xml:"refreshAllConnections,attr,omitempty"` + SaveExternalLinkValues bool `xml:"saveExternalLinkValues,attr,omitempty"` + ShowBorderUnselectedTables bool `xml:"showBorderUnselectedTables,attr,omitempty"` + ShowInkAnnotation bool `xml:"showInkAnnotation,attr,omitempty"` + ShowObjects string `xml:"showObjects,attr,omitempty"` + ShowPivotChartFilter bool `xml:"showPivotChartFilter,attr,omitempty"` + UpdateLinks string `xml:"updateLinks,attr,omitempty"` +} + +// 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. type xlsxBookViews struct { WorkBookView []xlsxWorkBookView `xml:"workbookView"` } // xlsxWorkBookView directly maps the workbookView element from the // namespace http://schemas.openxmlformats.org/spreadsheetml/2006/main -// - currently I have not checked it for completeness - it does as -// much as I need. +// This element specifies a single Workbook view. type xlsxWorkBookView struct { - ActiveTab int `xml:"activeTab,attr,omitempty"` - FirstSheet int `xml:"firstSheet,attr,omitempty"` - ShowHorizontalScroll bool `xml:"showHorizontalScroll,attr,omitempty"` - ShowVerticalScroll bool `xml:"showVerticalScroll,attr,omitempty"` - ShowSheetTabs bool `xml:"showSheetTabs,attr,omitempty"` - TabRatio int `xml:"tabRatio,attr,omitempty"` - WindowHeight int `xml:"windowHeight,attr,omitempty"` - WindowWidth int `xml:"windowWidth,attr,omitempty"` - XWindow string `xml:"xWindow,attr,omitempty"` - YWindow string `xml:"yWindow,attr,omitempty"` + ActiveTab int `xml:"activeTab,attr,omitempty"` + AutoFilterDateGrouping bool `xml:"autoFilterDateGrouping,attr,omitempty"` + FirstSheet int `xml:"firstSheet,attr,omitempty"` + Minimized bool `xml:"minimized,attr,omitempty"` + ShowHorizontalScroll bool `xml:"showHorizontalScroll,attr,omitempty"` + ShowSheetTabs bool `xml:"showSheetTabs,attr,omitempty"` + ShowVerticalScroll bool `xml:"showVerticalScroll,attr,omitempty"` + TabRatio int `xml:"tabRatio,attr,omitempty"` + Visibility string `xml:"visibility,attr,omitempty"` + WindowHeight int `xml:"windowHeight,attr,omitempty"` + WindowWidth int `xml:"windowWidth,attr,omitempty"` + XWindow string `xml:"xWindow,attr,omitempty"` + YWindow string `xml:"yWindow,attr,omitempty"` } // xlsxSheets directly maps the sheets element from the namespace -// http://schemas.openxmlformats.org/spreadsheetml/2006/main - -// currently I have not checked it for completeness - it does as much -// as I need. +// http://schemas.openxmlformats.org/spreadsheetml/2006/main. type xlsxSheets struct { Sheet []xlsxSheet `xml:"sheet"` } @@ -162,47 +194,57 @@ type xlsxExtLst struct { Ext string `xml:",innerxml"` } -// xlsxDefinedNames directly maps the definedNames element from the -// namespace http://schemas.openxmlformats.org/spreadsheetml/2006/main -// - currently I have not checked it for completeness - it does as -// much as I need. +// 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. type xlsxDefinedNames struct { DefinedName []xlsxDefinedName `xml:"definedName"` } // xlsxDefinedName directly maps the definedName element from the // namespace http://schemas.openxmlformats.org/spreadsheetml/2006/main -// - currently I have not checked it for completeness - it does as -// much as I need. -// for a descriptions of the attributes see -// https://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.definedname.aspx +// 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 value. For a descriptions of the attributes +// see https://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.definedname.aspx type xlsxDefinedName struct { - Data string `xml:",chardata"` - Name string `xml:"name,attr"` Comment string `xml:"comment,attr,omitempty"` CustomMenu string `xml:"customMenu,attr,omitempty"` Description string `xml:"description,attr,omitempty"` + Function bool `xml:"function,attr,omitempty"` + FunctionGroupID int `xml:"functionGroupId,attr,omitempty"` Help string `xml:"help,attr,omitempty"` + Hidden bool `xml:"hidden,attr,omitempty"` + LocalSheetID int `xml:"localSheetId,attr,omitempty"` + Name string `xml:"name,attr,omitempty"` + PublishToServer bool `xml:"publishToServer,attr,omitempty"` ShortcutKey string `xml:"shortcutKey,attr,omitempty"` StatusBar string `xml:"statusBar,attr,omitempty"` - LocalSheetID int `xml:"localSheetId,attr,omitempty"` - FunctionGroupID int `xml:"functionGroupId,attr,omitempty"` - Function bool `xml:"function,attr,omitempty"` - Hidden bool `xml:"hidden,attr,omitempty"` VbProcedure bool `xml:"vbProcedure,attr,omitempty"` - PublishToServer bool `xml:"publishToServer,attr,omitempty"` WorkbookParameter bool `xml:"workbookParameter,attr,omitempty"` Xlm bool `xml:"xml,attr,omitempty"` + Data string `xml:",chardata"` } -// xlsxCalcPr directly maps the calcPr element from the namespace -// http://schemas.openxmlformats.org/spreadsheetml/2006/main - -// currently I have not checked it for completeness - it does as much -// as I need. +// xlsxCalcPr directly maps the calcPr element. This element defines the +// 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. type xlsxCalcPr struct { - CalcID string `xml:"calcId,attr,omitempty"` - IterateCount int `xml:"iterateCount,attr,omitempty"` - RefMode string `xml:"refMode,attr,omitempty"` - Iterate bool `xml:"iterate,attr,omitempty"` - IterateDelta float64 `xml:"iterateDelta,attr,omitempty"` + CalcCompleted bool `xml:"calcCompleted,attr,omitempty"` + CalcID string `xml:"calcId,attr,omitempty"` + CalcMode string `xml:"calcMode,attr,omitempty"` + CalcOnSave bool `xml:"calcOnSave,attr,omitempty"` + ConcurrentCalc bool `xml:"concurrentCalc,attr,omitempty"` + 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"` } |