Documentation ¶
Index ¶
- Constants
- Variables
- func ColIndexToLetters(colRef int) string
- func ColLettersToIndex(letters string) int
- func FileToSlice(path string, options ...FileOption) ([][][]string, error)
- func FileToSliceUnmerged(path string, options ...FileOption) ([][][]string, error)
- func GetCellIDStringFromCoords(x, y int) string
- func GetCellIDStringFromCoordsWithFixed(x, y int, xFixed, yFixed bool) string
- func GetCoordsFromCellIDString(cellIDString string) (x, y int, error error)
- func HSLToRGB(h, s, l float64) (r, g, b uint8)
- func MakeDefaultContentTypes() (types xlsxTypes)
- func NewDataValidation(startRow, startCol, endRow, endCol int, allowBlank bool) *xlsxDataValidation
- func RGBToHSL(r, g, b uint8) (h, s, l float64)
- func RowIndexToString(rowRef int) string
- func SetDefaultFont(size int, name string)
- func TimeFromExcelTime(excelTime float64, date1904 bool) time.Time
- func TimeToExcelTime(t time.Time, date1904 bool) float64
- func TimeToUTCTime(t time.Time) time.Time
- func UseDiskVCellStore(f *File)
- func UseMemoryCellStore(f *File)
- type Alignment
- type AutoFilter
- type Border
- type Cell
- func (c *Cell) Bool() bool
- func (c *Cell) Float() (float64, error)
- func (c *Cell) FormattedValue() (string, error)
- func (c *Cell) Formula() string
- func (c *Cell) GeneralNumeric() (string, error)
- func (c *Cell) GeneralNumericWithoutScientific() (string, error)
- func (c *Cell) GetNumberFormat() string
- func (c *Cell) GetStyle() *Style
- func (c *Cell) GetTime(date1904 bool) (t time.Time, err error)
- func (c *Cell) Int() (int, error)
- func (c *Cell) Int64() (int64, error)
- func (c *Cell) IsTime() bool
- func (c Cell) MarshalBinary() ([]byte, error)
- func (c *Cell) Merge(hcells, vcells int)
- func (c *Cell) SetBool(b bool)
- func (c *Cell) SetDataValidation(dd *xlsxDataValidation)
- func (c *Cell) SetDate(t time.Time)
- func (c *Cell) SetDateTime(t time.Time)
- func (c *Cell) SetDateTimeWithFormat(n float64, format string)
- func (c *Cell) SetDateWithOptions(t time.Time, options DateTimeOptions)
- func (c *Cell) SetFloat(n float64)
- func (c *Cell) SetFloatWithFormat(n float64, format string)
- func (c *Cell) SetFormat(format string)
- func (c *Cell) SetFormula(formula string)
- func (c *Cell) SetHyperlink(hyperlink string, displayText string, tooltip string)
- func (c *Cell) SetInt(n int)
- func (c *Cell) SetInt64(n int64)
- func (c *Cell) SetNumeric(s string)
- func (c *Cell) SetString(s string)
- func (c *Cell) SetStringFormula(formula string)
- func (c *Cell) SetStyle(style *Style)
- func (c *Cell) SetValue(n interface{})
- func (c *Cell) String() string
- func (c *Cell) Type() CellType
- func (c *Cell) UnmarshalBinary(data []byte) error
- type CellInterface
- type CellStore
- type CellStoreConstructor
- type CellType
- type CellVisitorFunc
- type Col
- type ColStore
- type ColStoreNode
- type DataValidationErrorStyle
- type DataValidationOperator
- type DataValidationType
- type DateTimeOptions
- type DiskVCellStore
- type File
- func NewFile(options ...FileOption) *File
- func OpenBinary(bs []byte, options ...FileOption) (*File, error)
- func OpenFile(fileName string, options ...FileOption) (file *File, err error)
- func OpenReaderAt(r io.ReaderAt, size int64, options ...FileOption) (*File, error)
- func ReadZip(f *zip.ReadCloser, options ...FileOption) (*File, error)
- func ReadZipReader(r *zip.Reader, options ...FileOption) (*File, error)
- func (f *File) AddSheet(sheetName string) (*Sheet, error)
- func (f *File) AddSheetWithCellStore(sheetName string, constructor CellStoreConstructor) (*Sheet, error)
- func (f *File) AppendSheet(sheet Sheet, sheetName string) (*Sheet, error)
- func (f *File) MarshallParts() (map[string]string, error)
- func (f *File) Save(path string) (err error)
- func (f *File) ToSlice() (output [][][]string, err error)
- func (f *File) ToSliceUnmerged() (output [][][]string, err error)
- func (f *File) Write(writer io.Writer) (err error)
- type FileOption
- type Fill
- type Font
- type HSL
- type Hyperlink
- type MemoryCellStore
- type Pane
- type RefTable
- type Relation
- type RelationshipTargetMode
- type RelationshipType
- type Row
- func (r *Row) AddCell() *Cell
- func (r *Row) ForEachCell(cvf CellVisitorFunc) error
- func (r *Row) GetCell(colIdx int) *Cell
- func (r *Row) ReadStruct(ptr interface{}) error
- func (r *Row) SetHeight(ht float64)
- func (r *Row) SetHeightCM(ht float64)
- func (r *Row) WriteSlice(e interface{}, cols int) int
- func (r *Row) WriteStruct(e interface{}, cols int) int
- type RowNotFoundError
- type RowVisitor
- type Sheet
- func (s *Sheet) AddDataValidation(dv *xlsxDataValidation)
- func (s *Sheet) AddRow() *Row
- func (s *Sheet) AddRowAtIndex(index int) (*Row, error)
- func (s *Sheet) Cell(row, col int) (*Cell, error)
- func (s *Sheet) Close()
- func (s *Sheet) Col(idx int) *Col
- func (s *Sheet) ForEachRow(rv RowVisitor) error
- func (s *Sheet) RemoveRowAtIndex(index int) error
- func (s *Sheet) Row(idx int) (*Row, error)
- func (s *Sheet) SetColParameters(col *Col)
- func (s *Sheet) SetColWidth(min, max int, width float64)
- func (s *Sheet) SetOutlineLevel(minCol, maxCol int, outlineLevel uint8)
- func (s *Sheet) SetType(minCol, maxCol int, cellType CellType)
- type SheetFormat
- type SheetView
- type StreamCell
- func NewDateStreamCell(t time.Time) StreamCell
- func NewIntegerStreamCell(cellData int) StreamCell
- func NewStreamCell(cellData string, cellStyle StreamStyle, cellType CellType) StreamCell
- func NewStringStreamCell(cellData string) StreamCell
- func NewStyledIntegerStreamCell(cellData int, cellStyle StreamStyle) StreamCell
- func NewStyledStringStreamCell(cellData string, cellStyle StreamStyle) StreamCell
- type StreamFile
- func (sf *StreamFile) AddMergeCells(startRowIdx, startColumnIdx, endRowIdx, endColumnIdx int)
- func (sf *StreamFile) Close() error
- func (sf *StreamFile) Error() error
- func (sf *StreamFile) Flush()
- func (sf *StreamFile) NextSheet() error
- func (sf *StreamFile) Write(cells []string) error
- func (sf *StreamFile) WriteAll(records [][]string) error
- func (sf *StreamFile) WriteAllS(records [][]StreamCell) error
- func (sf *StreamFile) WriteS(cells []StreamCell) error
- func (sf *StreamFile) WriteWithColumnDefaultMetadata(cells []string) error
- type StreamFileBuilder
- func (sb *StreamFileBuilder) AddNewNumberFormat(formatCode string) int
- func (sb *StreamFileBuilder) AddSheet(name string, cellTypes []*CellType) error
- func (sb *StreamFileBuilder) AddSheetS(name string, columnStyles []StreamStyle) error
- func (sb *StreamFileBuilder) AddSheetWithAutoFilters(name string, cellTypes []*CellType) error
- func (sb *StreamFileBuilder) AddSheetWithDefaultColumnMetadata(name string, columnsDefaultStreamingCellMetadata []*StreamingCellMetadata) error
- func (sb *StreamFileBuilder) AddStreamStyle(streamStyle StreamStyle) error
- func (sb *StreamFileBuilder) AddStreamStyleList(streamStyles []StreamStyle) error
- func (sb *StreamFileBuilder) AddValidation(sheetIndex int, validation *xlsxDataValidation)
- func (sb *StreamFileBuilder) Build() (*StreamFile, error)
- type StreamStyle
- func MakeDateStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
- func MakeDecimalStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
- func MakeIntegerStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
- func MakeStringStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
- func MakeStyle(numFormatId int, font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
- type StreamingCellMetadata
- type Style
- type WorkBookRels
- type XLSXReaderError
- type XLSXUnmarshaler
Examples ¶
Constants ¶
const ( DataValidationTypeCustom DataValidationTypeDate DataValidationTypeDecimal DataValidationTypeTextLeng DataValidationTypeTime // DataValidationTypeWhole Integer DataValidationTypeWhole )
Data validation types
const ( DataValidationOperatorBetween DataValidationOperatorEqual DataValidationOperatorGreaterThan DataValidationOperatorGreaterThanOrEqual DataValidationOperatorLessThan DataValidationOperatorLessThanOrEqual DataValidationOperatorNotBetween DataValidationOperatorNotEqual )
Data validation operators
const ( MJD_0 float64 = 2400000.5 MJD_JD2000 float64 = 51544.5 )
const ( TRUE = 0x01 FALSE = 0x00 US = 0x1f // Unit Separator RS = 0x1e // Record Separator GS = 0x1d // Group Separator )
const ( GeneralFormat = 0 IntegerFormat = 1 DecimalFormat = 2 DateFormat_dd_mm_yy = 14 DateTimeFormat_d_m_yy_h_mm = 22 )
const ( Helvetica = "Helvetica" Baskerville = "Baskerville Old Face" TimesNewRoman = "Times New Roman" Bodoni = "Bodoni MT" GillSans = "Gill Sans MT" Courier = "Courier" )
Several popular font names that can be used to create fonts
const ( RGB_Light_Green = "FFC6EFCE" RGB_Dark_Green = "FF006100" RGB_Light_Red = "FFFFC7CE" RGB_Dark_Red = "FF9C0006" RGB_White = "00000000" RGB_Black = "FFFFFFFF" )
const ColWidth = 9.5
Default column width in excel
const Excel2006MaxRowCount = 1048576
const Excel2006MaxRowIndex = Excel2006MaxRowCount - 1
const NoRowLimit int = -1
const (
Solid_Cell_Fill = "solid"
)
const TEMPLATE_DOCPROPS_APP = `` /* 308-byte string literal not displayed */
const TEMPLATE_DOCPROPS_CORE = `` /* 364-byte string literal not displayed */
const TEMPLATE_XL_THEME_THEME = `` /* 10940-byte string literal not displayed */
const TEMPLATE__RELS_DOT_RELS = `` /* 580-byte string literal not displayed */
Variables ¶
var ( DefaultDateFormat = builtInNumFmt[14] DefaultDateTimeFormat = builtInNumFmt[22] DefaultDateOptions = DateTimeOptions{ Location: timeLocationUTC, ExcelTimeFormat: DefaultDateFormat, } DefaultDateTimeOptions = DateTimeOptions{ Location: timeLocationUTC, ExcelTimeFormat: DefaultDateTimeFormat, } )
var ( NoCurrentSheetError = errors.New("no Current Sheet") WrongNumberOfRowsError = errors.New("invalid number of cells passed to Write. All calls to Write on the same sheet must have the same number of cells") AlreadyOnLastSheetError = errors.New("NextSheet() called, but already on last sheet") UnsupportedCellTypeError = errors.New("the given cell type is not supported") )
var BuiltStreamFileBuilderError = errors.New("StreamFileBuilder has already been built, functions may no longer be used")
var HSLModel = color.ModelFunc(hslModel)
HSLModel converts any color.Color to a HSL color.
Functions ¶
func ColIndexToLetters ¶
ColIndexToLetters is used to convert a zero based, numeric column indentifier into a character code.
func ColLettersToIndex ¶
ColLettersToIndex is used to convert a character based column reference to a zero based numeric column identifier.
func FileToSlice ¶
func FileToSlice(path string, options ...FileOption) ([][][]string, error)
A convenient wrapper around File.ToSlice, FileToSlice will return the raw data contained in an Excel XLSX file as three dimensional slice. The first index represents the sheet number, the second the row number, and the third the cell number.
For example:
var mySlice [][][]string var value string mySlice = xlsx.FileToSlice("myXLSX.xlsx") value = mySlice[0][0][0]
Here, value would be set to the raw value of the cell A1 in the first sheet in the XLSX file.
func FileToSliceUnmerged ¶
func FileToSliceUnmerged(path string, options ...FileOption) ([][][]string, error)
FileToSliceUnmerged is a wrapper around File.ToSliceUnmerged. It returns the raw data contained in an Excel XLSX file as three dimensional slice. Merged cells will be unmerged. Covered cells become the values of theirs origins.
func GetCellIDStringFromCoords ¶
GetCellIDStringFromCoords returns the Excel format cell name that represents a pair of zero based cartesian coordinates.
func GetCellIDStringFromCoordsWithFixed ¶
GetCellIDStringFromCoordsWithFixed returns the Excel format cell name that represents a pair of zero based cartesian coordinates. It can specify either value as fixed.
func GetCoordsFromCellIDString ¶
GetCoordsFromCellIDString returns the zero based cartesian coordinates from a cell name in Excel format, e.g. the cellIDString "A1" returns 0, 0 and the "B3" return 1, 2.
func MakeDefaultContentTypes ¶
func MakeDefaultContentTypes() (types xlsxTypes)
func NewDataValidation ¶
NewDataValidation return data validation struct
func RowIndexToString ¶
RowIndexToString is used to convert a zero based, numeric row indentifier into its string representation.
func SetDefaultFont ¶
func TimeFromExcelTime ¶
Convert an excelTime representation (stored as a floating point number) to a time.Time.
func TimeToExcelTime ¶
TimeToExcelTime will convert a time.Time into Excel's float representation, in either 1900 or 1904 mode. If you don't know which to use, set date1904 to false. TODO should this should handle Julian dates?
func UseDiskVCellStore ¶
func UseDiskVCellStore(f *File)
UseDiskVCellStore is a FileOption that makes all Sheet instances for a File use DiskV as their backing store. You can use this option when handling very large Sheets that would otherwise riquire allocating vast amounts of memory.
func UseMemoryCellStore ¶
func UseMemoryCellStore(f *File)
UseMemoryCellStore is a FileOption that makes all Sheet instances for a File use memory as their backing store. This is the default backing store. You can use this option when you are comfortable keeping the contents of each Sheet in memory. This is faster than using a disk backed store, but can easily use a large amount of memory and, if you exhaust the available system memory, it'll actualy be slower than using a disk backed store (e.g. DiskV).
Types ¶
type Alignment ¶
type Alignment struct { Horizontal string Indent int ShrinkToFit bool TextRotation int Vertical string WrapText bool }
func DefaultAlignment ¶
func DefaultAlignment() *Alignment
type AutoFilter ¶
type Border ¶
type Border struct { Left string LeftColor string Right string RightColor string Top string TopColor string Bottom string BottomColor string }
Border is a high level structure intended to provide user access to the contents of Border Style within an Sheet.
func DefaultBorder ¶
func DefaultBorder() *Border
type Cell ¶
type Cell struct { Row *Row Value string NumFmt string Hidden bool HMerge int VMerge int DataValidation *xlsxDataValidation Hyperlink Hyperlink // contains filtered or unexported fields }
Cell is a high level structure intended to provide user access to the contents of Cell within an xlsx.Row.
func (*Cell) Bool ¶
Bool returns a boolean from a cell's value. TODO: Determine if the current return value is appropriate for types other than CellTypeBool.
func (*Cell) FormattedValue ¶
FormattedValue returns a value, and possibly an error condition from a Cell. If it is possible to apply a format to the cell value, it will do so, if not then an error will be returned, along with the raw value of the Cell.
func (*Cell) GeneralNumeric ¶
GeneralNumeric returns the value of the cell as a string. It is formatted very closely to the the XLSX spec for how to display values when the storage type is Number and the format type is General. It is not 100% identical to the spec but is as close as you can get using the built in Go formatting tools.
func (*Cell) GeneralNumericWithoutScientific ¶
GeneralNumericWithoutScientific returns numbers that are always formatted as numbers, but it does not follow the rules for when XLSX should switch to scientific notation, since sometimes scientific notation is not desired, even if that is how the document is supposed to be formatted.
func (*Cell) GetNumberFormat ¶
GetNumberFormat returns the number format string for a cell.
func (*Cell) Int ¶
Int returns the value of cell as integer. Has max 53 bits of precision See: float64(int64(math.MaxInt))
func (Cell) MarshalBinary ¶
Return a representation of the Cell as a slice of bytes
func (*Cell) SetDataValidation ¶
func (c *Cell) SetDataValidation(dd *xlsxDataValidation)
SetDataValidation set data validation
func (*Cell) SetDateTime ¶
func (*Cell) SetDateTimeWithFormat ¶
func (*Cell) SetDateWithOptions ¶
func (c *Cell) SetDateWithOptions(t time.Time, options DateTimeOptions)
SetDateWithOptions allows for more granular control when exporting dates and times
func (*Cell) SetFloatWithFormat ¶
SetFloatWithFormat sets the value of a cell to a float and applies formatting to the cell.
func (*Cell) SetFormula ¶
SetFormula sets the format string for a cell.
func (*Cell) SetHyperlink ¶
SetHyperlink sets this cell to contain the given hyperlink, displayText and tooltip. If the displayText or tooltip are an empty string, they will not be set. The hyperlink provided must be a valid URL starting with http:// or https:// or excel will not recognize it as an external link.
func (*Cell) SetNumeric ¶
SetNumeric sets a cell's value to a number
func (*Cell) SetStringFormula ¶
func (*Cell) SetValue ¶
func (c *Cell) SetValue(n interface{})
SetInt sets a cell's value to an integer.
func (*Cell) String ¶
String returns the value of a Cell as a string. If you'd like to see errors returned from formatting then please use Cell.FormattedValue() instead.
func (*Cell) UnmarshalBinary ¶
Read a slice of bytes, produced by MarshalBinary, into a Cell
type CellInterface ¶
CellInterface defines the public API of the Cell.
type CellStore ¶
type CellStore interface { ReadRow(key string) (*Row, error) WriteRow(r *Row) error MoveRow(r *Row, newIndex int) error RemoveRow(key string) error Close() error }
CellStore provides an interface for interacting with backend cell storage. For example, this allows us, as required, to persist cells to some store instead of holding them in memory. This tactic allows us a degree of control around the characteristics of our programs when handling large spreadsheets - we can choose to run more slowly, but without exhausting system memory.
If you wish to implement a custom CellStore you must not only support this interface, but also a CellStoreConstructor and a FileOption that set's the File's cellStoreConstructor to the right constructor.
func NewDiskVCellStore ¶
NewDiskVCellStore is a CellStoreConstructor than returns a CellStore in terms of DiskV.
func NewMemoryCellStore ¶
NewMemoryCellStore returns a pointer to a newly allocated MemoryCellStore
type CellStoreConstructor ¶
CellStoreConstructor defines the signature of a function that will be used to return a new instance of the CellStore implmentation, you must pass this into
type CellType ¶
type CellType int
CellType is an int type for storing metadata about the data type in the cell.
const ( CellTypeString CellType = iota // CellTypeStringFormula is a specific format for formulas that return string values. Formulas that return numbers // and booleans are stored as those types. CellTypeStringFormula CellTypeNumeric CellTypeBool // CellTypeInline is not respected on save, all inline string cells will be saved as SharedStrings // when saving to an XLSX file. This the same behavior as that found in Excel. CellTypeInline CellTypeError // d (Date): Cell contains a date in the ISO 8601 format. // That is the only mention of this format in the XLSX spec. // Date seems to be unused by the current version of Excel, it stores dates as Numeric cells with a date format string. // For now these cells will have their value output directly. It is unclear if the value is supposed to be parsed // into a number and then formatted using the formatting or not. CellTypeDate )
These are the cell types from the ST_CellType spec
type CellVisitorFunc ¶
CellVisitorFunc defines the signature of a function that will be called when visiting a Cell using CellStore.ForEachInRow.
type Col ¶
type Col struct { Min int Max int Hidden bool Width float64 Collapsed bool OutlineLevel uint8 BestFit bool CustomWidth bool Phonetic bool // contains filtered or unexported fields }
func NewColForRange ¶
NewColForRange return a pointer to a new Col, which will apply to columns in the range min to max (inclusive). Note, in order for this Col to do anything useful you must set some of its parameters and then apply it to a Sheet by calling sheet.SetColParameters.
func (*Col) SetOutlineLevel ¶
type ColStore ¶
type ColStore struct { Root *ColStoreNode Len int }
ColStore is the working store of Col definitions, it will simplify all Cols added to it, to ensure there ar no overlapping definitions.
func (*ColStore) Add ¶
func (cs *ColStore) Add(col *Col) *ColStoreNode
Add a Col to the ColStore. If it overwrites all, or part of some existing Col's range of columns the that Col will be adjusted and/or split to make room for the new Col.
func (*ColStore) FindColByIndex ¶
type ColStoreNode ¶
type ColStoreNode struct { Col *Col Prev *ColStoreNode Next *ColStoreNode }
type DataValidationErrorStyle ¶
type DataValidationErrorStyle int
const ( StyleStop DataValidationErrorStyle StyleWarning StyleInformation )
Data validation error styles
type DataValidationType ¶
type DataValidationType int
type DateTimeOptions ¶
type DateTimeOptions struct { // Location allows calculating times in other timezones/locations Location *time.Location // ExcelTimeFormat is the string you want excel to use to format the datetime ExcelTimeFormat string }
DateTimeOptions are additional options for exporting times
type DiskVCellStore ¶
type DiskVCellStore struct {
// contains filtered or unexported fields
}
DiskVCellStore is an implementation of the CellStore interface, backed by DiskV
func (*DiskVCellStore) Close ¶
func (cs *DiskVCellStore) Close() error
Close will remove the persisant storage for a given Sheet completely.
func (*DiskVCellStore) MoveRow ¶
func (cs *DiskVCellStore) MoveRow(r *Row, index int) error
MoveRow moves a Row from one position in a Sheet (index) to another within the persistant store.
func (*DiskVCellStore) ReadRow ¶
func (cs *DiskVCellStore) ReadRow(key string) (*Row, error)
ReadRow reads a row from the persistant store, identified by key, into memory and returns it.
func (*DiskVCellStore) RemoveRow ¶
func (cs *DiskVCellStore) RemoveRow(key string) error
RemoveRow removes a Row from the Sheet's representation in the persistant store.
func (*DiskVCellStore) WriteRow ¶
func (cs *DiskVCellStore) WriteRow(r *Row) error
WriteRow writes a Row to persistant storage.
type File ¶
type File struct { Date1904 bool Sheets []*Sheet Sheet map[string]*Sheet DefinedNames []*xlsxDefinedName // contains filtered or unexported fields }
File is a high level structure providing a slice of Sheet structs to the user.
func NewFile ¶
func NewFile(options ...FileOption) *File
NewFile creates a new File struct. You may pass it zero, one or many FileOption functions that affect the behaviour of the file.
func OpenBinary ¶
func OpenBinary(bs []byte, options ...FileOption) (*File, error)
OpenBinary() take bytes of an XLSX file and returns a populated xlsx.File struct for it.
func OpenFile ¶
func OpenFile(fileName string, options ...FileOption) (file *File, err error)
OpenFile will take the name of an XLSX file and returns a populated xlsx.File struct for it. You may pass it zero, one or many FileOption functions that affect the behaviour of the file.
func OpenReaderAt ¶
OpenReaderAt() take io.ReaderAt of an XLSX file and returns a populated xlsx.File struct for it.
func ReadZip ¶
func ReadZip(f *zip.ReadCloser, options ...FileOption) (*File, error)
ReadZip() takes a pointer to a zip.ReadCloser and returns a xlsx.File struct populated with its contents. In most cases ReadZip is not used directly, but is called internally by OpenFile.
func ReadZipReader ¶
func ReadZipReader(r *zip.Reader, options ...FileOption) (*File, error)
ReadZipReader() can be used to read an XLSX in memory without touching the filesystem.
func (*File) AddSheet ¶
AddSheet Add a new Sheet, with the provided name, to a File. The minimum sheet name length is 1 character. If the sheet name length is less an error is thrown. The maximum sheet name length is 31 characters. If the sheet name length is exceeded an error is thrown. These special characters are also not allowed: : \ / ? * [ ]
func (*File) AddSheetWithCellStore ¶
func (f *File) AddSheetWithCellStore(sheetName string, constructor CellStoreConstructor) (*Sheet, error)
func (*File) AppendSheet ¶
Appends an existing Sheet, with the provided name, to a File
func (*File) MarshallParts ¶
Construct a map of file name to XML content representing the file in terms of the structure of an XLSX file.
func (*File) ToSlice ¶
Return the raw data contained in the File as three dimensional slice. The first index represents the sheet number, the second the row number, and the third the cell number.
For example:
var mySlice [][][]string var value string mySlice = xlsx.FileToSlice("myXLSX.xlsx") value = mySlice[0][0][0]
Here, value would be set to the raw value of the cell A1 in the first sheet in the XLSX file.
func (*File) ToSliceUnmerged ¶
ToSliceUnmerged returns the raw data contained in the File as three dimensional slice (s. method ToSlice). A covered cell become the value of its origin cell. Example: table where A1:A2 merged. | 01.01.2011 | Bread | 20 | | | Fish | 70 | This sheet will be converted to the slice: [ [01.01.2011 Bread 20]
[01.01.2011 Fish 70] ]
type FileOption ¶
type FileOption func(f *File)
func RowLimit ¶
func RowLimit(n int) FileOption
RowLimit will limit the rows handled in any given sheet to the first n, where n is the number of rows.
type Fill ¶
Fill is a high level structure intended to provide user access to the contents of background and foreground color index within an Sheet.
func DefaultFill ¶
func DefaultFill() *Fill
type Font ¶
type Font struct { Size int Name string Family int Charset int Color string Bold bool Italic bool Underline bool }
func DefaultFont ¶
func DefaultFont() *Font
type HSL ¶
type HSL struct {
H, S, L float64
}
HSL represents a cylindrical coordinate of points in an RGB color model.
Values are in the range 0 to 1.
type MemoryCellStore ¶
type MemoryCellStore struct {
// contains filtered or unexported fields
}
MemoryCellStore is the default CellStore - it holds all rows and cells in system memory. This is fast, right up until you run out of memory ;-)
func (*MemoryCellStore) Close ¶
func (mcs *MemoryCellStore) Close() error
Close is nullOp for the MemoryCellStore, but we have to comply with the interface.
func (*MemoryCellStore) MoveRow ¶
func (mcs *MemoryCellStore) MoveRow(r *Row, index int) error
MoveRow moves the persisted Row's position in the sheet.
func (*MemoryCellStore) ReadRow ¶
func (mcs *MemoryCellStore) ReadRow(key string) (*Row, error)
ReadRow returns a Row identfied by the given key.
func (*MemoryCellStore) RemoveRow ¶
func (mcs *MemoryCellStore) RemoveRow(key string) error
RemoveRow removes a row from the sheet, it doesn't specifically move any following rows, leaving this decision to the user.
func (*MemoryCellStore) WriteRow ¶
func (mcs *MemoryCellStore) WriteRow(r *Row) error
WriteRow pushes the Row to the MemoryCellStore.
type RefTable ¶
type RefTable struct {
// contains filtered or unexported fields
}
func MakeSharedStringRefTable ¶
func MakeSharedStringRefTable(source *xlsxSST) *RefTable
MakeSharedStringRefTable() takes an xlsxSST struct and converts it's contents to an slice of strings used to refer to string values by numeric index - this is the model used within XLSX worksheet (a numeric reference is stored to a shared cell value).
func NewSharedStringRefTable ¶
func NewSharedStringRefTable() *RefTable
NewSharedStringRefTable() creates a new, empty RefTable.
func (*RefTable) AddString ¶
AddString adds a string to the reference table and return it's numeric index. If the string already exists then it simply returns the existing index.
func (*RefTable) ResolveSharedString ¶
Resolvesharedstring() looks up a string value by numeric index from a provided reference table (just a slice of strings in the correct order). This function only exists to provide clarity of purpose via it's name.
type Relation ¶
type Relation struct { Type RelationshipType Target string TargetMode RelationshipTargetMode }
type RelationshipTargetMode ¶
type RelationshipTargetMode string
const (
RelationshipTargetModeExternal RelationshipTargetMode = "External"
)
type RelationshipType ¶
type RelationshipType string
const (
RelationshipTypeHyperlink RelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
)
type Row ¶
type Row struct { Hidden bool // Hidden determines whether this Row is hidden or not. Sheet *Sheet // Sheet is a reference back to the Sheet that this Row is within. Height float64 // Height is the current height of the Row in PostScript Points OutlineLevel uint8 // OutlineLevel contains the outline level of this Row. Used for collapsing. // contains filtered or unexported fields }
Row represents a single Row in the current Sheet.
func (*Row) ForEachCell ¶
func (r *Row) ForEachCell(cvf CellVisitorFunc) error
ForEachCell will call the provided CellVisitorFunc for each currently defined cell in the Row.
func (*Row) GetCell ¶
GetCell returns the Cell at a given column index, creating it if it doesn't exist.
func (*Row) ReadStruct ¶
ReadStruct reads a struct from r to ptr. Accepts a ptr to struct. This code expects a tag xlsx:"N", where N is the index of the cell to be used. Basic types like int,string,float64 and bool are supported
Example ¶
//example type type structTest struct { IntVal int `xlsx:"0"` StringVal string `xlsx:"1"` FloatVal float64 `xlsx:"2"` IgnoredVal int `xlsx:"-"` BoolVal bool `xlsx:"4"` } structVal := structTest{ IntVal: 16, StringVal: "heyheyhey :)!", FloatVal: 3.14159216, IgnoredVal: 7, BoolVal: true, } //create a new xlsx file and write a struct //in a new row f := NewFile() sheet, _ := f.AddSheet("TestRead") row := sheet.AddRow() row.WriteStruct(&structVal, -1) //read the struct from the same row readStruct := &structTest{} err := row.ReadStruct(readStruct) if err != nil { panic(err) } fmt.Println(readStruct)
Output:
func (*Row) SetHeightCM ¶
SetHeightCM sets the height of the Row in centimetres, inherently converting it to PostScript points.
func (*Row) WriteSlice ¶
Writes an array to row r. Accepts a pointer to array type 'e', and writes the number of columns to write, 'cols'. If 'cols' is < 0, the entire array will be written if possible. Returns -1 if the 'e' doesn't point to an array, otherwise the number of columns written.
func (*Row) WriteStruct ¶
Writes a struct to row r. Accepts a pointer to struct type 'e', and the number of columns to write, `cols`. If 'cols' is < 0, the entire struct will be written if possible. Returns -1 if the 'e' doesn't point to a struct, otherwise the number of columns written
type RowNotFoundError ¶
type RowNotFoundError struct {
// contains filtered or unexported fields
}
RowNotFoundError is an Error that should be returned by a RowStore implementation if a call to ReadRow is made with a key that doesn't correspond to any persisted Row.
func NewRowNotFoundError ¶
func NewRowNotFoundError(key, reason string) *RowNotFoundError
NewRowNotFoundError creates a new RowNotFoundError, capturing the Row key and the reason this key could not be found.
func (RowNotFoundError) Error ¶
func (cnfe RowNotFoundError) Error() string
Error returns a human-readable description of the failure to find a Row. It makes RowNotFoundError comply with the Error interface.
type RowVisitor ¶
type Sheet ¶
type Sheet struct { Name string File *File Cols *ColStore MaxRow int MaxCol int Hidden bool Selected bool SheetViews []SheetView SheetFormat SheetFormat AutoFilter *AutoFilter Relations []Relation DataValidations []*xlsxDataValidation // contains filtered or unexported fields }
Sheet is a high level structure intended to provide user access to the contents of a particular sheet within an XLSX file.
func NewSheetWithCellStore ¶
func NewSheetWithCellStore(name string, constructor CellStoreConstructor) (*Sheet, error)
NewSheetWithCellStore constructs a Sheet, backed by a CellStore, for which you must provide the constructor function.
func (*Sheet) AddDataValidation ¶
func (s *Sheet) AddDataValidation(dv *xlsxDataValidation)
Add a DataValidation to a range of cells
func (*Sheet) AddRowAtIndex ¶
Add a new Row to a Sheet at a specific index
func (*Sheet) Cell ¶
Get a Cell by passing it's cartesian coordinates (zero based) as row and column integer indexes.
For example:
cell := sheet.Cell(0,0)
... would set the variable "cell" to contain a Cell struct containing the data from the field "A1" on the spreadsheet.
func (*Sheet) Close ¶
func (s *Sheet) Close()
Remove Sheet's dependant resources - if you are done with operations on a sheet this should be called to clear down the Sheet's persistent cache. Typically this happens *after* you've saved your changes.
func (*Sheet) Col ¶
Return the Col that applies to this Column index, or return nil if no such Col exists
func (*Sheet) ForEachRow ¶
func (s *Sheet) ForEachRow(rv RowVisitor) error
func (*Sheet) RemoveRowAtIndex ¶
Removes a row at a specific index
func (*Sheet) SetColParameters ¶
Set the parameters of a column. Parameters are passed as a pointer to a Col structure which you much construct yourself.
func (*Sheet) SetColWidth ¶
Set the width of a range of columns.
func (*Sheet) SetOutlineLevel ¶
Set the outline level for a range of columns.
type SheetFormat ¶
type StreamCell ¶
type StreamCell struct {
// contains filtered or unexported fields
}
StreamCell holds the data, style and type of cell for streaming.
func NewDateStreamCell ¶
func NewDateStreamCell(t time.Time) StreamCell
NewDateStreamCell creates a new cell that holds a date value and is formatted as dd-mm-yyyy and is of type numeric.
func NewIntegerStreamCell ¶
func NewIntegerStreamCell(cellData int) StreamCell
NewIntegerStreamCell creates a new cell that holds an integer value (represented as string), is formatted as a standard integer and is of type numeric.
func NewStreamCell ¶
func NewStreamCell(cellData string, cellStyle StreamStyle, cellType CellType) StreamCell
NewStreamCell creates a new cell containing the given data with the given style and type.
func NewStringStreamCell ¶
func NewStringStreamCell(cellData string) StreamCell
NewStringStreamCell creates a new cell that holds string data, is of type string and uses general formatting.
func NewStyledIntegerStreamCell ¶
func NewStyledIntegerStreamCell(cellData int, cellStyle StreamStyle) StreamCell
NewStyledIntegerStreamCell creates a new cell that holds an integer value (represented as string) and is styled according to the given style.
func NewStyledStringStreamCell ¶
func NewStyledStringStreamCell(cellData string, cellStyle StreamStyle) StreamCell
NewStyledStringStreamCell creates a new cell that holds a string and is styled according to the given style.
type StreamFile ¶
type StreamFile struct {
// contains filtered or unexported fields
}
func (*StreamFile) AddMergeCells ¶
func (sf *StreamFile) AddMergeCells(startRowIdx, startColumnIdx, endRowIdx, endColumnIdx int)
func (*StreamFile) Close ¶
func (sf *StreamFile) Close() error
Close closes the Stream File. Any sheets that have not yet been written to will have an empty sheet created for them.
func (*StreamFile) Error ¶
func (sf *StreamFile) Error() error
Error reports any error that has occurred during a previous Write or Flush.
func (*StreamFile) Flush ¶
func (sf *StreamFile) Flush()
func (*StreamFile) NextSheet ¶
func (sf *StreamFile) NextSheet() error
NextSheet will switch to the next sheet. Sheets are selected in the same order they were added. Once you leave a sheet, you cannot return to it.
func (*StreamFile) Write ¶
func (sf *StreamFile) Write(cells []string) error
Write will write a row of cells to the current sheet. Every call to Write on the same sheet must contain the same number of cells as the header provided when the sheet was created or an error will be returned. This function will always trigger a flush on success. Currently the only supported data type is string data.
func (*StreamFile) WriteAll ¶
func (sf *StreamFile) WriteAll(records [][]string) error
func (*StreamFile) WriteAllS ¶
func (sf *StreamFile) WriteAllS(records [][]StreamCell) error
WriteAllS will write all the rows provided in records. All rows must have the same number of cells as the number of columns given when creating the sheet. This function will always trigger a flush on success. WriteAllS supports all data types and styles that are supported by StreamCell.
func (*StreamFile) WriteS ¶
func (sf *StreamFile) WriteS(cells []StreamCell) error
WriteS will write a row of cells to the current sheet. Every call to WriteS on the same sheet must contain the same number of cells as the number of columns provided when the sheet was created or an error will be returned. This function will always trigger a flush on success. WriteS supports all data types and styles that are supported by StreamCell.
func (*StreamFile) WriteWithColumnDefaultMetadata ¶
func (sf *StreamFile) WriteWithColumnDefaultMetadata(cells []string) error
WriteWithColumnDefaultMetadata will write a row of cells to the current sheet. Every call to WriteWithColumnDefaultMetadata on the same sheet must contain the same number of cells as the header provided when the sheet was created or an error will be returned. This function will always trigger a flush on success. Each cell will be encoded with the default StreamingCellMetadata of the column that it belongs to. However, if the cell data string cannot be parsed into the cell type in StreamingCellMetadata, we fall back on encoding the cell as a string and giving it a default string style
type StreamFileBuilder ¶
type StreamFileBuilder struct {
// contains filtered or unexported fields
}
func NewStreamFileBuilder ¶
func NewStreamFileBuilder(writer io.Writer, options ...FileOption) *StreamFileBuilder
NewStreamFileBuilder creates an StreamFileBuilder that will write to the the provided io.writer
func NewStreamFileBuilderForPath ¶
func NewStreamFileBuilderForPath(path string, options ...FileOption) (*StreamFileBuilder, error)
NewStreamFileBuilderForPath takes the name of an XLSX file and returns a builder for it. The file will be created if it does not exist, or truncated if it does.
func (*StreamFileBuilder) AddNewNumberFormat ¶
func (sb *StreamFileBuilder) AddNewNumberFormat(formatCode string) int
func (*StreamFileBuilder) AddSheet ¶
func (sb *StreamFileBuilder) AddSheet(name string, cellTypes []*CellType) error
AddSheet will add sheets with the given name. Sheet names must be unique, or an error will be thrown.
func (*StreamFileBuilder) AddSheetS ¶
func (sb *StreamFileBuilder) AddSheetS(name string, columnStyles []StreamStyle) error
AddSheetS will add a sheet with the given name and column styles. The number of column styles given is the number of columns that will be created, and thus the number of cells each row has to have. columnStyles[0] becomes the style of the first column, columnStyles[1] the style of the second column etc. All the styles in columnStyles have to have been added or an error will be returned. Sheet names must be unique, or an error will be returned.
func (*StreamFileBuilder) AddSheetWithAutoFilters ¶
func (sb *StreamFileBuilder) AddSheetWithAutoFilters(name string, cellTypes []*CellType) error
AddSheetWithAutoFilters will add sheets with the given name. Sheet names must be unique, or an error will be thrown. AddSheetWithAutoFilters will also add autoFilters for every column in the sheet.
func (*StreamFileBuilder) AddSheetWithDefaultColumnMetadata ¶
func (sb *StreamFileBuilder) AddSheetWithDefaultColumnMetadata(name string, columnsDefaultStreamingCellMetadata []*StreamingCellMetadata) error
func (*StreamFileBuilder) AddStreamStyle ¶
func (sb *StreamFileBuilder) AddStreamStyle(streamStyle StreamStyle) error
AddStreamStyle adds a new style to the style sheet. Only Styles that have been added through this function will be usable. This function cannot be used after AddSheetS or Build has been called, and if it is called after AddSheetS or Buildit will return an error.
func (*StreamFileBuilder) AddStreamStyleList ¶
func (sb *StreamFileBuilder) AddStreamStyleList(streamStyles []StreamStyle) error
AddStreamStyleList adds a list of new styles to the style sheet. Only Styles that have been added through either this function or AddStreamStyle will be usable. This function cannot be used after AddSheetS and Build has been called, and if it is called after AddSheetS and Build it will return an error.
func (*StreamFileBuilder) AddValidation ¶
func (sb *StreamFileBuilder) AddValidation(sheetIndex int, validation *xlsxDataValidation)
AddValidation will add a validation to a sheet.
func (*StreamFileBuilder) Build ¶
func (sb *StreamFileBuilder) Build() (*StreamFile, error)
Build begins streaming the XLSX file to the io, by writing all the XLSX metadata. It creates a StreamFile struct that can be used to write the rows to the sheets.
type StreamStyle ¶
type StreamStyle struct {
// contains filtered or unexported fields
}
StreamStyle has style and formatting information. Used to store a style for streaming
var ( StreamStyleFromColumn StreamStyle StreamStyleDefaultString StreamStyle StreamStyleBoldString StreamStyle StreamStyleItalicString StreamStyle StreamStyleUnderlinedString StreamStyle StreamStyleDefaultInteger StreamStyle StreamStyleBoldInteger StreamStyle StreamStyleItalicInteger StreamStyle StreamStyleUnderlinedInteger StreamStyle StreamStyleDefaultDate StreamStyle StreamStyleDefaultDecimal StreamStyle )
func MakeDateStyle ¶
func MakeDateStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
MakeDateStyle creates a new style that can be used on cells with Date data. The formatting used is: dd_mm_yy If used on other data the formatting might be wrong.
func MakeDecimalStyle ¶
func MakeDecimalStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
MakeDecimalStyle creates a new style that can be used on cells with decimal numeric data. If used on other data the formatting might be wrong.
func MakeIntegerStyle ¶
func MakeIntegerStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
MakeIntegerStyle creates a new style that can be used on cells with integer data. If used on other data the formatting might be wrong.
func MakeStringStyle ¶
func MakeStringStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle
MakeStringStyle creates a new style that can be used on cells with string data. If used on other data the formatting might be wrong.
type StreamingCellMetadata ¶
type StreamingCellMetadata struct {
// contains filtered or unexported fields
}
StreamingCellMetadata represents anything attributable to a cell except for the cell data itself. For example, it is used in StreamFileBuilder.AddSheetWithDefaultColumnMetadata to associate default attributes for cells in a particular column
var ( DefaultStringStreamingCellMetadata StreamingCellMetadata DefaultNumericStreamingCellMetadata StreamingCellMetadata DefaultDecimalStreamingCellMetadata StreamingCellMetadata DefaultIntegerStreamingCellMetadata StreamingCellMetadata DefaultDateStreamingCellMetadata StreamingCellMetadata )
func MakeStreamingCellMetadata ¶
func MakeStreamingCellMetadata(cellType CellType, streamStyle StreamStyle) StreamingCellMetadata
func (StreamingCellMetadata) Ptr ¶
func (cm StreamingCellMetadata) Ptr() *StreamingCellMetadata
type Style ¶
type Style struct { Border Border Fill Fill Font Font ApplyBorder bool ApplyFill bool ApplyFont bool ApplyAlignment bool Alignment Alignment NamedStyleIndex *int }
Style is a high level structure intended to provide user access to the contents of Style within an XLSX file.
type WorkBookRels ¶
func (*WorkBookRels) MakeXLSXWorkbookRels ¶
func (w *WorkBookRels) MakeXLSXWorkbookRels() xlsxWorkbookRels
type XLSXReaderError ¶
type XLSXReaderError struct {
Err string
}
XLSXReaderError is the standard error type for otherwise undefined errors in the XSLX reading process.
func (*XLSXReaderError) Error ¶
func (e *XLSXReaderError) Error() string
Error returns a string value from an XLSXReaderError struct in order that it might comply with the builtin.error interface.
type XLSXUnmarshaler ¶
XLSXUnmarshaler is the interface implemented for types that can unmarshal a Row as a representation of themselves.
Source Files ¶
- cell.go
- cellstore.go
- col.go
- data_validation.go
- date.go
- diskv.go
- doc.go
- file.go
- format_code.go
- hsl.go
- lib.go
- memory.go
- read.go
- reftable.go
- row.go
- sheet.go
- stream_cell.go
- stream_file.go
- stream_file_builder.go
- stream_style.go
- style.go
- templates.go
- testutil.go
- theme.go
- utility.go
- write.go
- xmlContentTypes.go
- xmlSharedStrings.go
- xmlStyle.go
- xmlTheme.go
- xmlWorkbook.go
- xmlWorksheet.go