Documentation ¶
Overview ¶
Package gooxml provides creation, reading, and writing of ECMA 376 Office Open XML documents, spreadsheets and presentations. It is still early in development, but is progressing quickly. This library takes a slightly different approach from others, in that it starts by trying to support all of the ECMA-376 standard when marshaling/unmarshaling XML documents. From there it adds wrappers around the ECMA-376 derived types that provide a more convenient interface.
The raw XML based types reside in the `schema/“ directory. These types are always accessible from the wrapper types via a `X() method that returns the raw type. Except for the base documents (document.Document, spreadsheet.Workbook and presentation.Presentation), the other wrapper types are value types with non-pointer methods. They exist solely to modify and return data from one or more XML types.
The packages of interest are baliance.com/gooxml/document, baliance/gooxml/spreadsheet and baliance.com/gooxml/presentation.
Example (Document) ¶
package main import ( "baliance.com/gooxml/document" ) func main() { // see the baliance.com/gooxml/document documentation or _examples/document // for more examples doc := document.New() doc.AddParagraph().AddRun().AddText("Hello World!") doc.SaveToFile("document.docx") }
Output:
Example (Spreadsheeet) ¶
package main import ( "baliance.com/gooxml/spreadsheet" ) func main() { // see the baliance.com/gooxml/spreadsheet documentation or _examples/spreadsheet // for more examples ss := spreadsheet.New() sheet := ss.AddSheet() sheet.AddRow().AddCell().SetString("Hello") sheet.Cell("B1").SetString("World!") ss.SaveToFile("workbook.xlsx") }
Output:
Index ¶
- Constants
- func AbsoluteFilename(dt DocType, typ string, index int) string
- func AddPreserveSpaceAttr(se *xml.StartElement, s string)
- func Bool(v bool) *bool
- func Float32(v float32) *float32
- func Float64(v float64) *float64
- func Int32(v int32) *int32
- func Int64(v int64) *int64
- func Int8(v int8) *int8
- func NeedsSpacePreserve(s string) bool
- func RegisterConstructor(ns, name string, fn interface{})
- func RelativeFilename(dt DocType, relToTyp, typ string, index int) string
- func String(v string) *string
- func Stringf(f string, args ...interface{}) *string
- func Uint16(v uint16) *uint16
- func Uint32(v uint32) *uint32
- func Uint64(v uint64) *uint64
- func Uint8(v uint8) *uint8
- type Any
- type DocType
- type XSDAny
Examples ¶
Constants ¶
const ( ContentTypesFilename = "[Content_Types].xml" BaseRelsFilename = "_rels/.rels" )
Common filenames used in zip packages.
const ( // Common OfficeDocumentType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" StylesType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" ThemeType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" ThemeContentType = "application/vnd.openxmlformats-officedocument.theme+xml" SettingsType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" ImageType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" CommentsType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" CommentsContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" ThumbnailType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail" DrawingType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing" DrawingContentType = "application/vnd.openxmlformats-officedocument.drawing+xml" ChartType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart" ChartContentType = "application/vnd.openxmlformats-officedocument.drawingml.chart+xml" HyperLinkType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" ExtendedPropertiesType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" CorePropertiesType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" // SML WorksheetType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" WorksheetContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" SMLStyleSheetContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" TableType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table" TableContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml" // WML HeaderType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" NumberingType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" FontTableType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" WebSettingsType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" FootNotesType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" EndNotesType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes" // PML SlideType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" SlideContentType = "application/vnd.openxmlformats-officedocument.presentationml.slide+xml" SlideMasterRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" SlideMasterContentType = "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml" SlideLayoutType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" SlideLayoutContentType = "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml" // VML VMLDrawingType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" VMLDrawingContentType = "application/vnd.openxmlformats-officedocument.vmlDrawing" )
Consts for content types used throughout the package
const MinGoVersion = requires_go_18
MinGoVersion is used to cause a compile time error if gooxml is compiled with an older version of go. Specifically it requires a feature in go 1.8 regarding collecting all attributes from arbitrary xml used in decode gooxml.XSDAny.
Variables ¶
This section is empty.
Functions ¶
func AbsoluteFilename ¶ added in v0.2.0
AbsoluteFilename returns the full path to a file from the root of the zip container. Index is used in some cases for files which there may be more than one of (e.g. worksheets/drawings/charts)
func AddPreserveSpaceAttr ¶
func AddPreserveSpaceAttr(se *xml.StartElement, s string)
AddPreserveSpaceAttr adds an xml:space="preserve" attribute to a start element if it is required for the string s.
func NeedsSpacePreserve ¶
NeedsSpacePreserve returns true if the string has leading or trailing space.
func RegisterConstructor ¶
func RegisterConstructor(ns, name string, fn interface{})
RegisterConstructor registers a constructor function used for unmarshaling xsd:any elements.
func RelativeFilename ¶ added in v0.2.0
RelativeFilename returns a filename relative to the source file referenced from a relationships file. Index is used in some cases for files which there may be more than one of (e.g. worksheets/drawings/charts)
func Stringf ¶ added in v0.2.0
Stringf formats according to a format specifier and returns a pointer to the resulting string.
Types ¶
type Any ¶
type Any interface { MarshalXML(e *xml.Encoder, start xml.StartElement) error UnmarshalXML(d *xml.Decoder, start xml.StartElement) error }
Any is the interface used for marshaling/unmarshaling xsd:any
func CreateElement ¶
func CreateElement(start xml.StartElement) (Any, error)
CreateElement creates an element with the given namespace and name. It is used to unmarshal some xsd:any elements to the appropriate concrete type.
type DocType ¶ added in v0.2.0
type DocType byte
DocType represents one of the three document types supported (docx/xlsx/pptx)
type XSDAny ¶
XSDAny is used to marshal/unmarshal xsd:any types in the OOXML schema.
func (*XSDAny) MarshalXML ¶
MarshalXML implements the xml.Marshaler interface.
func (*XSDAny) UnmarshalXML ¶
UnmarshalXML implements the xml.Unmarshaler interface.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
_examples
|
|
cmd
|
|
Package color provides color handling structures and functions for use across all of the document types.
|
Package color provides color handling structures and functions for use across all of the document types. |
Package common contains wrapper types and utilities common to all of the OOXML document formats.
|
Package common contains wrapper types and utilities common to all of the OOXML document formats. |
Package document provides creation, reading, and writing of ECMA 376 Open Office XML documents.
|
Package document provides creation, reading, and writing of ECMA 376 Open Office XML documents. |
schema
|
|
format
Package format provides support for parsing and evaluating spreadsheetml/Excel number formats.
|
Package format provides support for parsing and evaluating spreadsheetml/Excel number formats. |
formula
Package formula provides formula parsing and evaluation.
|
Package formula provides formula parsing and evaluation. |