xmlWorksheet.go 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. package excelize
  2. import "encoding/xml"
  3. // xlsxWorksheet directly maps the worksheet element in the namespace
  4. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  5. // not checked it for completeness - it does as much as I need.
  6. type xlsxWorksheet struct {
  7. XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main worksheet"`
  8. SheetPr *xlsxSheetPr `xml:"sheetPr"`
  9. Dimension xlsxDimension `xml:"dimension"`
  10. SheetViews xlsxSheetViews `xml:"sheetViews,omitempty"`
  11. SheetFormatPr *xlsxSheetFormatPr `xml:"sheetFormatPr"`
  12. Cols *xlsxCols `xml:"cols,omitempty"`
  13. SheetData xlsxSheetData `xml:"sheetData"`
  14. SheetProtection *xlsxSheetProtection `xml:"sheetProtection"`
  15. AutoFilter *xlsxAutoFilter `xml:"autoFilter"`
  16. MergeCells *xlsxMergeCells `xml:"mergeCells"`
  17. PhoneticPr *xlsxPhoneticPr `xml:"phoneticPr"`
  18. ConditionalFormatting []*xlsxConditionalFormatting `xml:"conditionalFormatting"`
  19. DataValidations *xlsxDataValidations `xml:"dataValidations"`
  20. Hyperlinks *xlsxHyperlinks `xml:"hyperlinks"`
  21. PrintOptions *xlsxPrintOptions `xml:"printOptions"`
  22. PageMargins *xlsxPageMargins `xml:"pageMargins"`
  23. PageSetUp *xlsxPageSetUp `xml:"pageSetup"`
  24. HeaderFooter *xlsxHeaderFooter `xml:"headerFooter"`
  25. Drawing *xlsxDrawing `xml:"drawing"`
  26. LegacyDrawing *xlsxLegacyDrawing `xml:"legacyDrawing"`
  27. Picture *xlsxPicture `xml:"picture"`
  28. TableParts *xlsxTableParts `xml:"tableParts"`
  29. ExtLst *xlsxExtLst `xml:"extLst"`
  30. }
  31. // xlsxDrawing change r:id to rid in the namespace.
  32. type xlsxDrawing struct {
  33. RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
  34. }
  35. // xlsxHeaderFooter directly maps the headerFooter element in the namespace
  36. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - When printed or
  37. // viewed in page layout view (§18.18.69), each page of a worksheet can have a
  38. // page header, a page footer, or both. The headers and footers on odd-numbered
  39. // pages can differ from those on even-numbered pages, and the headers and
  40. // footers on the first page can differ from those on odd- and even-numbered
  41. // pages. In the latter case, the first page is not considered an odd page.
  42. type xlsxHeaderFooter struct {
  43. DifferentFirst bool `xml:"differentFirst,attr,omitempty"`
  44. DifferentOddEven bool `xml:"differentOddEven,attr,omitempty"`
  45. OddHeader []*xlsxOddHeader `xml:"oddHeader"`
  46. OddFooter []*xlsxOddFooter `xml:"oddFooter"`
  47. }
  48. // xlsxOddHeader directly maps the oddHeader element in the namespace
  49. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  50. // not checked it for completeness - it does as much as I need.
  51. type xlsxOddHeader struct {
  52. Content string `xml:",chardata"`
  53. }
  54. // xlsxOddFooter directly maps the oddFooter element in the namespace
  55. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  56. // not checked it for completeness - it does as much as I need.
  57. type xlsxOddFooter struct {
  58. Content string `xml:",chardata"`
  59. }
  60. // xlsxPageSetUp directly maps the pageSetup element in the namespace
  61. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Page setup
  62. // settings for the worksheet.
  63. type xlsxPageSetUp struct {
  64. BlackAndWhite bool `xml:"blackAndWhite,attr,omitempty"`
  65. CellComments string `xml:"cellComments,attr,omitempty"`
  66. Copies int `xml:"copies,attr,omitempty"`
  67. Draft bool `xml:"draft,attr,omitempty"`
  68. Errors string `xml:"errors,attr,omitempty"`
  69. FirstPageNumber int `xml:"firstPageNumber,attr,omitempty"`
  70. FitToHeight *int `xml:"fitToHeight,attr"`
  71. FitToWidth int `xml:"fitToWidth,attr,omitempty"`
  72. HorizontalDPI float32 `xml:"horizontalDpi,attr,omitempty"`
  73. RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
  74. Orientation string `xml:"orientation,attr,omitempty"`
  75. PageOrder string `xml:"pageOrder,attr,omitempty"`
  76. PaperHeight string `xml:"paperHeight,attr,omitempty"`
  77. PaperSize string `xml:"paperSize,attr,omitempty"`
  78. PaperWidth string `xml:"paperWidth,attr,omitempty"`
  79. Scale int `xml:"scale,attr,omitempty"`
  80. UseFirstPageNumber bool `xml:"useFirstPageNumber,attr,omitempty"`
  81. UsePrinterDefaults bool `xml:"usePrinterDefaults,attr,omitempty"`
  82. VerticalDPI float32 `xml:"verticalDpi,attr,omitempty"`
  83. }
  84. // xlsxPrintOptions directly maps the printOptions element in the namespace
  85. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Print options for
  86. // the sheet. Printer-specific settings are stored separately in the Printer
  87. // Settings part.
  88. type xlsxPrintOptions struct {
  89. GridLines bool `xml:"gridLines,attr,omitempty"`
  90. GridLinesSet bool `xml:"gridLinesSet,attr,omitempty"`
  91. Headings bool `xml:"headings,attr,omitempty"`
  92. HorizontalCentered bool `xml:"horizontalCentered,attr,omitempty"`
  93. VerticalCentered bool `xml:"verticalCentered,attr,omitempty"`
  94. }
  95. // xlsxPageMargins directly maps the pageMargins element in the namespace
  96. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Page margins for
  97. // a sheet or a custom sheet view.
  98. type xlsxPageMargins struct {
  99. Bottom float64 `xml:"bottom,attr"`
  100. Footer float64 `xml:"footer,attr"`
  101. Header float64 `xml:"header,attr"`
  102. Left float64 `xml:"left,attr"`
  103. Right float64 `xml:"right,attr"`
  104. Top float64 `xml:"top,attr"`
  105. }
  106. // xlsxSheetFormatPr directly maps the sheetFormatPr element in the namespace
  107. // http://schemas.openxmlformats.org/spreadsheetml/2006/main. This element
  108. // specifies the sheet formatting properties.
  109. type xlsxSheetFormatPr struct {
  110. BaseColWidth uint8 `xml:"baseColWidth,attr,omitempty"`
  111. CustomHeight float64 `xml:"customHeight,attr,omitempty"`
  112. DefaultColWidth float64 `xml:"defaultColWidth,attr,omitempty"`
  113. DefaultRowHeight float64 `xml:"defaultRowHeight,attr"`
  114. ThickTop bool `xml:"thickTop,attr,omitempty"`
  115. OutlineLevelCol uint8 `xml:"outlineLevelCol,attr,omitempty"`
  116. OutlineLevelRow uint8 `xml:"outlineLevelRow,attr,omitempty"`
  117. ZeroHeight float64 `xml:"zeroHeight,attr,omitempty"`
  118. }
  119. // xlsxSheetViews directly maps the sheetViews element in the namespace
  120. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Worksheet views
  121. // collection.
  122. type xlsxSheetViews struct {
  123. SheetView []xlsxSheetView `xml:"sheetView"`
  124. }
  125. // xlsxSheetView directly maps the sheetView element in the namespace
  126. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  127. // not checked it for completeness - it does as much as I need. A single sheet
  128. // view definition. When more than one sheet view is defined in the file, it
  129. // means that when opening the workbook, each sheet view corresponds to a
  130. // separate window within the spreadsheet application, where each window is
  131. // showing the particular sheet containing the same workbookViewId value, the
  132. // last sheetView definition is loaded, and the others are discarded. When
  133. // multiple windows are viewing the same sheet, multiple sheetView elements
  134. // (with corresponding workbookView entries) are saved.
  135. type xlsxSheetView struct {
  136. WindowProtection bool `xml:"windowProtection,attr,omitempty"`
  137. ShowFormulas bool `xml:"showFormulas,attr,omitempty"`
  138. ShowGridLines string `xml:"showGridLines,attr,omitempty"`
  139. ShowRowColHeaders bool `xml:"showRowColHeaders,attr,omitempty"`
  140. ShowZeros bool `xml:"showZeros,attr,omitempty"`
  141. RightToLeft bool `xml:"rightToLeft,attr,omitempty"`
  142. TabSelected bool `xml:"tabSelected,attr,omitempty"`
  143. ShowWhiteSpace *bool `xml:"showWhiteSpace,attr"`
  144. ShowOutlineSymbols bool `xml:"showOutlineSymbols,attr,omitempty"`
  145. DefaultGridColor bool `xml:"defaultGridColor,attr"`
  146. View string `xml:"view,attr,omitempty"`
  147. TopLeftCell string `xml:"topLeftCell,attr,omitempty"`
  148. ColorID int `xml:"colorId,attr,omitempty"`
  149. ZoomScale float64 `xml:"zoomScale,attr,omitempty"`
  150. ZoomScaleNormal float64 `xml:"zoomScaleNormal,attr,omitempty"`
  151. ZoomScalePageLayoutView float64 `xml:"zoomScalePageLayoutView,attr,omitempty"`
  152. ZoomScaleSheetLayoutView float64 `xml:"zoomScaleSheetLayoutView,attr,omitempty"`
  153. WorkbookViewID int `xml:"workbookViewId,attr"`
  154. Pane *xlsxPane `xml:"pane,omitempty"`
  155. Selection []*xlsxSelection `xml:"selection"`
  156. }
  157. // xlsxSelection directly maps the selection element in the namespace
  158. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Worksheet view
  159. // selection.
  160. type xlsxSelection struct {
  161. ActiveCell string `xml:"activeCell,attr,omitempty"`
  162. ActiveCellID *int `xml:"activeCellId,attr"`
  163. Pane string `xml:"pane,attr,omitempty"`
  164. SQRef string `xml:"sqref,attr,omitempty"`
  165. }
  166. // xlsxSelection directly maps the selection element. Worksheet view pane.
  167. type xlsxPane struct {
  168. ActivePane string `xml:"activePane,attr,omitempty"`
  169. State string `xml:"state,attr,omitempty"` // Either "split" or "frozen"
  170. TopLeftCell string `xml:"topLeftCell,attr,omitempty"`
  171. XSplit float64 `xml:"xSplit,attr,omitempty"`
  172. YSplit float64 `xml:"ySplit,attr,omitempty"`
  173. }
  174. // xlsxSheetPr directly maps the sheetPr element in the namespace
  175. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Sheet-level
  176. // properties.
  177. type xlsxSheetPr struct {
  178. XMLName xml.Name `xml:"sheetPr"`
  179. CodeName string `xml:"codeName,attr,omitempty"`
  180. EnableFormatConditionsCalculation *bool `xml:"enableFormatConditionsCalculation,attr"`
  181. FilterMode bool `xml:"filterMode,attr,omitempty"`
  182. Published bool `xml:"published,attr,omitempty"`
  183. SyncHorizontal bool `xml:"syncHorizontal,attr,omitempty"`
  184. SyncVertical bool `xml:"syncVertical,attr,omitempty"`
  185. TransitionEntry bool `xml:"transitionEntry,attr,omitempty"`
  186. TabColor *xlsxTabColor `xml:"tabColor,omitempty"`
  187. PageSetUpPr *xlsxPageSetUpPr `xml:"pageSetUpPr,omitempty"`
  188. }
  189. // xlsxPageSetUpPr directly maps the pageSetupPr element in the namespace
  190. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Page setup
  191. // properties of the worksheet.
  192. type xlsxPageSetUpPr struct {
  193. AutoPageBreaks bool `xml:"autoPageBreaks,attr,omitempty"`
  194. FitToPage bool `xml:"fitToPage,attr,omitempty"` // Flag indicating whether the Fit to Page print option is enabled.
  195. }
  196. // xlsxTabColor directly maps the tabColor element in the namespace currently I
  197. // have not checked it for completeness - it does as much as I need.
  198. type xlsxTabColor struct {
  199. Theme int `xml:"theme,attr,omitempty"`
  200. Tint float64 `xml:"tint,attr,omitempty"`
  201. }
  202. // xlsxCols directly maps the cols element in the namespace
  203. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  204. // not checked it for completeness - it does as much as I need.
  205. type xlsxCols struct {
  206. Col []xlsxCol `xml:"col"`
  207. }
  208. // xlsxCol directly maps the col (Column Width & Formatting). Defines column
  209. // width and column formatting for one or more columns of the worksheet.
  210. type xlsxCol struct {
  211. BestFit bool `xml:"bestFit,attr,omitempty"`
  212. Collapsed bool `xml:"collapsed,attr"`
  213. CustomWidth bool `xml:"customWidth,attr,omitempty"`
  214. Hidden bool `xml:"hidden,attr"`
  215. Max int `xml:"max,attr"`
  216. Min int `xml:"min,attr"`
  217. OutlineLevel uint8 `xml:"outlineLevel,attr,omitempty"`
  218. Phonetic bool `xml:"phonetic,attr,omitempty"`
  219. Style int `xml:"style,attr"`
  220. Width float64 `xml:"width,attr"`
  221. }
  222. // xlsxDimension directly maps the dimension element in the namespace
  223. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - This element
  224. // specifies the used range of the worksheet. It specifies the row and column
  225. // bounds of used cells in the worksheet. This is optional and is not required.
  226. // Used cells include cells with formulas, text content, and cell formatting.
  227. // When an entire column is formatted, only the first cell in that column is
  228. // considered used.
  229. type xlsxDimension struct {
  230. Ref string `xml:"ref,attr"`
  231. }
  232. // xlsxSheetData directly maps the sheetData element in the namespace
  233. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  234. // not checked it for completeness - it does as much as I need.
  235. type xlsxSheetData struct {
  236. XMLName xml.Name `xml:"sheetData"`
  237. Row []xlsxRow `xml:"row"`
  238. }
  239. // xlsxRow directly maps the row element. The element expresses information
  240. // about an entire row of a worksheet, and contains all cell definitions for a
  241. // particular row in the worksheet.
  242. type xlsxRow struct {
  243. Collapsed bool `xml:"collapsed,attr,omitempty"`
  244. CustomFormat bool `xml:"customFormat,attr,omitempty"`
  245. CustomHeight bool `xml:"customHeight,attr,omitempty"`
  246. Hidden bool `xml:"hidden,attr,omitempty"`
  247. Ht float64 `xml:"ht,attr,omitempty"`
  248. OutlineLevel uint8 `xml:"outlineLevel,attr,omitempty"`
  249. Ph bool `xml:"ph,attr,omitempty"`
  250. R int `xml:"r,attr,omitempty"`
  251. S int `xml:"s,attr,omitempty"`
  252. Spans string `xml:"spans,attr,omitempty"`
  253. ThickBot bool `xml:"thickBot,attr,omitempty"`
  254. ThickTop bool `xml:"thickTop,attr,omitempty"`
  255. C []xlsxC `xml:"c"`
  256. }
  257. // xlsxMergeCell directly maps the mergeCell element. A single merged cell.
  258. type xlsxMergeCell struct {
  259. Ref string `xml:"ref,attr,omitempty"`
  260. }
  261. // xlsxMergeCells directly maps the mergeCells element. This collection
  262. // expresses all the merged cells in the sheet.
  263. type xlsxMergeCells struct {
  264. Count int `xml:"count,attr,omitempty"`
  265. Cells []*xlsxMergeCell `xml:"mergeCell,omitempty"`
  266. }
  267. // xlsxDataValidations expresses all data validation information for cells in a
  268. // sheet which have data validation features applied.
  269. type xlsxDataValidations struct {
  270. Count int `xml:"count,attr,omitempty"`
  271. DisablePrompts bool `xml:"disablePrompts,attr,omitempty"`
  272. XWindow int `xml:"xWindow,attr,omitempty"`
  273. YWindow int `xml:"yWindow,attr,omitempty"`
  274. DataValidation string `xml:",innerxml"`
  275. }
  276. // xlsxC directly maps the c element in the namespace
  277. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  278. // not checked it for completeness - it does as much as I need.
  279. type xlsxC struct {
  280. R string `xml:"r,attr"` // Cell ID, e.g. A1
  281. S int `xml:"s,attr,omitempty"` // Style reference.
  282. // Str string `xml:"str,attr,omitempty"` // Style reference.
  283. T string `xml:"t,attr,omitempty"` // Type.
  284. F *xlsxF `xml:"f,omitempty"` // Formula
  285. V string `xml:"v,omitempty"` // Value
  286. XMLSpace xml.Attr `xml:"space,attr,omitempty"`
  287. }
  288. // xlsxF directly maps the f element in the namespace
  289. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - currently I have
  290. // not checked it for completeness - it does as much as I need.
  291. type xlsxF struct {
  292. Content string `xml:",chardata"`
  293. T string `xml:"t,attr,omitempty"` // Formula type
  294. Ref string `xml:"ref,attr,omitempty"` // Shared formula ref
  295. Si string `xml:"si,attr,omitempty"` // Shared formula index
  296. }
  297. // xlsxSheetProtection collection expresses the sheet protection options to
  298. // enforce when the sheet is protected.
  299. type xlsxSheetProtection struct {
  300. AlgorithmName string `xml:"algorithmName,attr,omitempty"`
  301. AutoFilter int `xml:"autoFilter,attr,omitempty"`
  302. DeleteColumns int `xml:"deleteColumns,attr,omitempty"`
  303. DeleteRows int `xml:"deleteRows,attr,omitempty"`
  304. FormatCells int `xml:"formatCells,attr,omitempty"`
  305. FormatColumns int `xml:"formatColumns,attr,omitempty"`
  306. FormatRows int `xml:"formatRows,attr,omitempty"`
  307. HashValue string `xml:"hashValue,attr,omitempty"`
  308. InsertColumns int `xml:"insertColumns,attr,omitempty"`
  309. InsertHyperlinks int `xml:"insertHyperlinks,attr,omitempty"`
  310. InsertRows int `xml:"insertRows,attr,omitempty"`
  311. Objects int `xml:"objects,attr,omitempty"`
  312. PivotTables int `xml:"pivotTables,attr,omitempty"`
  313. SaltValue string `xml:"saltValue,attr,omitempty"`
  314. Scenarios int `xml:"scenarios,attr,omitempty"`
  315. SelectLockedCells int `xml:"selectLockedCells,attr,omitempty"`
  316. SelectUnlockedCell int `xml:"selectUnlockedCell,attr,omitempty"`
  317. Sheet int `xml:"sheet,attr,omitempty"`
  318. Sort int `xml:"sort,attr,omitempty"`
  319. SpinCount int `xml:"spinCount,attr,omitempty"`
  320. }
  321. // xlsxPhoneticPr (Phonetic Properties) represents a collection of phonetic
  322. // properties that affect the display of phonetic text for this String Item
  323. // (si). Phonetic text is used to give hints as to the pronunciation of an East
  324. // Asian language, and the hints are displayed as text within the spreadsheet
  325. // cells across the top portion of the cell. Since the phonetic hints are text,
  326. // every phonetic hint is expressed as a phonetic run (rPh), and these
  327. // properties specify how to display that phonetic run.
  328. type xlsxPhoneticPr struct {
  329. Alignment string `xml:"alignment,attr,omitempty"`
  330. FontID int `xml:"fontId,attr,omitempty"`
  331. Type string `xml:"type,attr,omitempty"`
  332. }
  333. // A Conditional Format is a format, such as cell shading or font color, that a
  334. // spreadsheet application can automatically apply to cells if a specified
  335. // condition is true. This collection expresses conditional formatting rules
  336. // applied to a particular cell or range.
  337. type xlsxConditionalFormatting struct {
  338. SQRef string `xml:"sqref,attr,omitempty"`
  339. CfRule []*xlsxCfRule `xml:"cfRule"`
  340. }
  341. // xlsxCfRule (Conditional Formatting Rule) represents a description of a
  342. // conditional formatting rule.
  343. type xlsxCfRule struct {
  344. AboveAverage *bool `xml:"aboveAverage,attr"`
  345. Bottom bool `xml:"bottom,attr,omitempty"`
  346. DxfID *int `xml:"dxfId,attr"`
  347. EqualAverage bool `xml:"equalAverage,attr,omitempty"`
  348. Operator string `xml:"operator,attr,omitempty"`
  349. Percent bool `xml:"percent,attr,omitempty"`
  350. Priority int `xml:"priority,attr,omitempty"`
  351. Rank int `xml:"rank,attr,omitempty"`
  352. StdDev int `xml:"stdDev,attr,omitempty"`
  353. StopIfTrue bool `xml:"stopIfTrue,attr,omitempty"`
  354. Text string `xml:"text,attr,omitempty"`
  355. TimePeriod string `xml:"timePeriod,attr,omitempty"`
  356. Type string `xml:"type,attr,omitempty"`
  357. Formula []string `xml:"formula,omitempty"`
  358. ColorScale *xlsxColorScale `xml:"colorScale"`
  359. DataBar *xlsxDataBar `xml:"dataBar"`
  360. IconSet *xlsxIconSet `xml:"iconSet"`
  361. ExtLst *xlsxExtLst `xml:"extLst"`
  362. }
  363. // xlsxColorScale (Color Scale) describes a gradated color scale in this
  364. // conditional formatting rule.
  365. type xlsxColorScale struct {
  366. Cfvo []*xlsxCfvo `xml:"cfvo"`
  367. Color []*xlsxColor `xml:"color"`
  368. }
  369. // dataBar (Data Bar) describes a data bar conditional formatting rule.
  370. type xlsxDataBar struct {
  371. MaxLength int `xml:"maxLength,attr,omitempty"`
  372. MinLength int `xml:"minLength,attr,omitempty"`
  373. ShowValue bool `xml:"showValue,attr,omitempty"`
  374. Cfvo []*xlsxCfvo `xml:"cfvo"`
  375. Color []*xlsxColor `xml:"color"`
  376. }
  377. // xlsxIconSet (Icon Set) describes an icon set conditional formatting rule.
  378. type xlsxIconSet struct {
  379. Cfvo []*xlsxCfvo `xml:"cfvo"`
  380. IconSet string `xml:"iconSet,attr,omitempty"`
  381. ShowValue bool `xml:"showValue,attr,omitempty"`
  382. Percent bool `xml:"percent,attr,omitempty"`
  383. Reverse bool `xml:"reverse,attr,omitempty"`
  384. }
  385. // cfvo (Conditional Format Value Object) describes the values of the
  386. // interpolation points in a gradient scale.
  387. type xlsxCfvo struct {
  388. Gte bool `xml:"gte,attr,omitempty"`
  389. Type string `xml:"type,attr,omitempty"`
  390. Val int `xml:"val,attr"`
  391. ExtLst *xlsxExtLst `xml:"extLst"`
  392. }
  393. // xlsxHyperlinks directly maps the hyperlinks element in the namespace
  394. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - A hyperlink can
  395. // be stored in a package as a relationship. Hyperlinks shall be identified by
  396. // containing a target which specifies the destination of the given hyperlink.
  397. type xlsxHyperlinks struct {
  398. Hyperlink []xlsxHyperlink `xml:"hyperlink"`
  399. }
  400. // xlsxHyperlink directly maps the hyperlink element in the namespace
  401. // http://schemas.openxmlformats.org/spreadsheetml/2006/main
  402. type xlsxHyperlink struct {
  403. Ref string `xml:"ref,attr"`
  404. Location string `xml:"location,attr,omitempty"`
  405. Display string `xml:"display,attr,omitempty"`
  406. RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
  407. }
  408. // xlsxTableParts directly maps the tableParts element in the namespace
  409. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - The table element
  410. // has several attributes applied to identify the table and the data range it
  411. // covers. The table id attribute needs to be unique across all table parts, the
  412. // same goes for the name and displayName. The displayName has the further
  413. // restriction that it must be unique across all defined names in the workbook.
  414. // Later on we will see that you can define names for many elements, such as
  415. // cells or formulas. The name value is used for the object model in Microsoft
  416. // Office Excel. The displayName is used for references in formulas. The ref
  417. // attribute is used to identify the cell range that the table covers. This
  418. // includes not only the table data, but also the table header containing column
  419. // names.
  420. // To add columns to your table you add new tableColumn elements to the
  421. // tableColumns container. Similar to the shared string table the collection
  422. // keeps a count attribute identifying the number of columns. Besides the table
  423. // definition in the table part there is also the need to identify which tables
  424. // are displayed in the worksheet. The worksheet part has a separate element
  425. // tableParts to store this information. Each table part is referenced through
  426. // the relationship ID and again a count of the number of table parts is
  427. // maintained. The following markup sample is taken from the documents
  428. // accompanying this book. The sheet data element has been removed to reduce the
  429. // size of the sample. To reference the table, just add the tableParts element,
  430. // of course after having created and stored the table part. For example:
  431. //
  432. // <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  433. // ...
  434. // <tableParts count="1">
  435. // <tablePart r:id="rId1" />
  436. // </tableParts>
  437. // </worksheet>
  438. //
  439. type xlsxTableParts struct {
  440. Count int `xml:"count,attr,omitempty"`
  441. TableParts []*xlsxTablePart `xml:"tablePart"`
  442. }
  443. // xlsxTablePart directly maps the tablePart element in the namespace
  444. // http://schemas.openxmlformats.org/spreadsheetml/2006/main
  445. type xlsxTablePart struct {
  446. RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
  447. }
  448. // xlsxPicture directly maps the picture element in the namespace
  449. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - Background sheet
  450. // image. For example:
  451. //
  452. // <picture r:id="rId1"/>
  453. //
  454. type xlsxPicture struct {
  455. RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
  456. }
  457. // xlsxLegacyDrawing directly maps the legacyDrawing element in the namespace
  458. // http://schemas.openxmlformats.org/spreadsheetml/2006/main - A comment is a
  459. // rich text note that is attached to, and associated with, a cell, separate
  460. // from other cell content. Comment content is stored separate from the cell,
  461. // and is displayed in a drawing object (like a text box) that is separate from,
  462. // but associated with, a cell. Comments are used as reminders, such as noting
  463. // how a complex formula works, or to provide feedback to other users. Comments
  464. // can also be used to explain assumptions made in a formula or to call out
  465. // something special about the cell.
  466. type xlsxLegacyDrawing struct {
  467. RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
  468. }
  469. // formatPanes directly maps the settings of the panes.
  470. type formatPanes struct {
  471. Freeze bool `json:"freeze"`
  472. Split bool `json:"split"`
  473. XSplit int `json:"x_split"`
  474. YSplit int `json:"y_split"`
  475. TopLeftCell string `json:"top_left_cell"`
  476. ActivePane string `json:"active_pane"`
  477. Panes []struct {
  478. SQRef string `json:"sqref"`
  479. ActiveCell string `json:"active_cell"`
  480. Pane string `json:"pane"`
  481. } `json:"panes"`
  482. }
  483. // formatConditional directly maps the conditional format settings of the cells.
  484. type formatConditional struct {
  485. Type string `json:"type"`
  486. AboveAverage bool `json:"above_average"`
  487. Percent bool `json:"percent"`
  488. Format int `json:"format"`
  489. Criteria string `json:"criteria"`
  490. Value string `json:"value,omitempty"`
  491. Minimum string `json:"minimum,omitempty"`
  492. Maximum string `json:"maximum,omitempty"`
  493. MinType string `json:"min_type,omitempty"`
  494. MidType string `json:"mid_type,omitempty"`
  495. MaxType string `json:"max_type,omitempty"`
  496. MinValue string `json:"min_value,omitempty"`
  497. MidValue string `json:"mid_value,omitempty"`
  498. MaxValue string `json:"max_value,omitempty"`
  499. MinColor string `json:"min_color,omitempty"`
  500. MidColor string `json:"mid_color,omitempty"`
  501. MaxColor string `json:"max_color,omitempty"`
  502. MinLength string `json:"min_length,omitempty"`
  503. MaxLength string `json:"max_length,omitempty"`
  504. MultiRange string `json:"multi_range,omitempty"`
  505. BarColor string `json:"bar_color,omitempty"`
  506. }