Documentation ¶
Overview ¶
Package unioffice 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 github.com/unidoc/unioffice/document, unidoc/unioffice/spreadsheet and github.com/unidoc/unioffice/presentation.
Example (Document) ¶
package main import ( "github.com/mec07/unioffice/document" ) func main() { // see the github.com/mec07/unioffice/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 ( "github.com/mec07/unioffice/spreadsheet" ) func main() { // see the github.com/mec07/unioffice/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
- Variables
- func AbsoluteFilename(dt DocType, typ string, index int) string
- func AbsoluteImageFilename(dt DocType, index int, fileExtension string) string
- func AddPreserveSpaceAttr(se *xml.StartElement, s string)
- func Bool(v bool) *bool
- func DisableLogging()
- func Float32(v float32) *float32
- func Float64(v float64) *float64
- func InstallLicense(s string) error
- 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 License
- type LicenseType
- type XSDAny
Examples ¶
Constants ¶
const ( ContentTypesFilename = "[Content_Types].xml" BaseRelsFilename = "_rels/.rels" )
Common filenames used in zip packages.
const ( // Common strict OfficeDocumentTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/officeDocument" StylesTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/styles" ThemeTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/theme" SettingsTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/settings" ImageTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/image" CommentsTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/comments" ThumbnailTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/metadata/thumbnail" DrawingTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/drawing" ChartTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/chart" ExtendedPropertiesTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/extendedProperties" CustomXMLTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/customXml" // SML strict WorksheetTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet" TableTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/table" // WML strict HeaderTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/header" NumberingTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/numbering" FontTableTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/fontTable" WebSettingsTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/webSettings" FootNotesTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/footnotes" EndNotesTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/endnotes" // PML strict SlideTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/slide" // VML strict VMLDrawingTypeStrict = "http://purl.oclc.org/ooxml/officeDocument/relationships/vmlDrawing" // 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" CustomXMLType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" // 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" ViewPropertiesType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps" TableStylesType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles" // 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" SlideMasterType = "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" PresentationPropertiesType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps" // 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 unioffice 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 unioffice.XSDAny.
const OpenSourceLicense = `` /* 271-byte string literal not displayed */
OpenSourceLicense is the AGPL open source license. It is installed by default if no license has previously been installed.
Variables ¶
var Log = log.Printf
Log is used to log content from within the library. The intent is to use logging sparingly, preferring to return an error. At the very least this allows redirecting logs to somewhere more appropriate than stdout.
var ReleaseDate = time.Date(2018, 9, 14, 0, 0, 0, 0, time.UTC)
ReleaseDate is the release date of the source code for licensing purposes.
var ReleaseVersion = "v0.8000"
Release is the last release version of the software.
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 AbsoluteImageFilename ¶ added in v1.1.3
AbsoluteImageFilename returns the full path to an image from the root of the zip container.
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 DisableLogging ¶ added in v0.6.0
func DisableLogging()
DisableLogging sets the Log function to a no-op so that any log messages are silently discarded.
func InstallLicense ¶ added in v0.6.0
InstallLicense installs a license, returning an error if the license is invalid or expired. Expiration checks the ReleaseDate variable in version.go.
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 License ¶ added in v0.6.0
type License struct { Name string Signature string `json:",omitempty"` Expiration time.Time LicenseType LicenseType }
License holds the unioffice license information.
func GetLicense ¶ added in v0.6.0
func GetLicense() License
GetLicense returns the current license. This can be used by commercial customers to assist in ensuring that their license hasn't expired.
func (License) Encoded ¶ added in v0.6.0
Encoded returns a base64 encoded version of the license for use with InstallLicense.
type LicenseType ¶ added in v0.6.0
type LicenseType byte
LicenseType is the type of license
const ( LicenseTypeInvalid LicenseType = iota LicenseTypeAGPL LicenseTypeCommercial )
LicenseType constants
func (LicenseType) String ¶ added in v0.6.0
func (i LicenseType) String() string
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. |