103 lines
2.9 KiB
Org Mode
103 lines
2.9 KiB
Org Mode
|
* XLSX
|
||
|
|
||
|
[[https://travis-ci.org/tealeg/xlsx][https://img.shields.io/travis/tealeg/xlsx/master.svg?style=flat-square]]
|
||
|
[[https://codecov.io/gh/tealeg/xlsx][https://codecov.io/gh/tealeg/xlsx/branch/master/graph/badge.svg]]
|
||
|
[[https://godoc.org/github.com/tealeg/xlsx][https://godoc.org/github.com/tealeg/xlsx?status.svg]]
|
||
|
[[https://github.com/tealeg/xlsx#license][https://img.shields.io/badge/license-bsd-orange.svg]]
|
||
|
|
||
|
** Introduction
|
||
|
xlsx is a library to simplify reading and writing the XML format used
|
||
|
by recent version of Microsoft Excel in Go programs.
|
||
|
|
||
|
The support for writing XLSX files is currently extremely minimal. It
|
||
|
will expand slowly, but in the meantime patches are welcome!
|
||
|
|
||
|
** Full API docs
|
||
|
The full API docs can be viewed using go's built in documentation
|
||
|
tool, or online at [[http://godoc.org/github.com/tealeg/xlsx][godoc.org]].
|
||
|
|
||
|
** Basic Usage
|
||
|
*** Reading XLSX files
|
||
|
Here is a minimal example usage that will dump all cell data in a
|
||
|
given XLSX file. A more complete example of this kind of
|
||
|
functionality is contained in [[https://github.com/tealeg/xlsx2csv][the XLSX2CSV program]]:
|
||
|
|
||
|
#+BEGIN_SRC go
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/tealeg/xlsx"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
excelFileName := "/home/tealeg/foo.xlsx"
|
||
|
xlFile, err := xlsx.OpenFile(excelFileName)
|
||
|
if err != nil {
|
||
|
...
|
||
|
}
|
||
|
for _, sheet := range xlFile.Sheets {
|
||
|
for _, row := range sheet.Rows {
|
||
|
for _, cell := range row.Cells {
|
||
|
text := cell.String()
|
||
|
fmt.Printf("%s\n", text)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#+END_SRC
|
||
|
|
||
|
Some additional information is available from the cell (for example,
|
||
|
style information). For more details see the godoc output for this
|
||
|
package.
|
||
|
|
||
|
*** Writing XLSX files
|
||
|
The following constitutes the bare minimum required to write an XLSX document.
|
||
|
|
||
|
#+BEGIN_SRC go
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/tealeg/xlsx"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
var file *xlsx.File
|
||
|
var sheet *xlsx.Sheet
|
||
|
var row *xlsx.Row
|
||
|
var cell *xlsx.Cell
|
||
|
var err error
|
||
|
|
||
|
file = xlsx.NewFile()
|
||
|
sheet, err = file.AddSheet("Sheet1")
|
||
|
if err != nil {
|
||
|
fmt.Printf(err.Error())
|
||
|
}
|
||
|
row = sheet.AddRow()
|
||
|
cell = row.AddCell()
|
||
|
cell.Value = "I am a cell!"
|
||
|
err = file.Save("MyXLSXFile.xlsx")
|
||
|
if err != nil {
|
||
|
fmt.Printf(err.Error())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#+END_SRC
|
||
|
|
||
|
** Contributing
|
||
|
|
||
|
We're extremely happy to review pull requests. Please be patient, maintaining XLSX doesn't pay anyone's salary (to my knowledge).
|
||
|
|
||
|
If you'd like to propose a change please ensure the following:
|
||
|
|
||
|
- All existing tests are passing.
|
||
|
- There are tests in the test suite that cover the changes you're making.
|
||
|
- You have added documentation strings (in English) to (at least) the public functions you've added or modified.
|
||
|
- Your use of, or creation of, XML is compliant with [[http://www.ecma-international.org/publications/standards/Ecma-376.htm][part 1 of the 4th edition of the ECMA-376 Standard for Office Open XML]].
|
||
|
|
||
|
Eat a peach - Geoff
|