OSDN Git Service

Stream to Excel table (#530)
authorCameron Howey <cameronh@emailline.net>
Sun, 29 Dec 2019 04:45:10 +0000 (20:45 -0800)
committerxuri <xuri.me@gmail.com>
Sun, 29 Dec 2019 04:45:10 +0000 (12:45 +0800)
commit5c87effc7e6c97fff36a56dea1afac8a2f06fb37
tree35153a2d36aed19c142bc54c6e8d632eff270109
parent8b960ee1e624bd2776a351a4a3b2ad04c29bae9a
Stream to Excel table (#530)

* Support all datatypes for StreamWriter

* Support setting styles with StreamWriter

**NOTE:** This is a breaking change. Values are now explicitly
passed as a []interface{} for simplicity. We also let styles to be
set at the same time.

* Create function to write stream into a table

* Write rows directly to buffer

Avoiding the xml.Encoder makes the streamer faster and use less
memory.

Using the included benchmark, the results went from:

> BenchmarkStreamWriter-4   514  2576155 ns/op  454918 B/op  6592 allocs/op

down to:

> BenchmarkStreamWriter-4  1614   777480 ns/op  147608 B/op  5570 allocs/op

* Use AddTable instead of SetTable

This requires reading the cells after they have been written,
which requires additional structure for the temp file.

As a bonus, we now efficiently allocate only one buffer when
reading the file back into memory, using the same approach
as ioutil.ReadFile.

* Use an exported Cell type to handle inline styles for StreamWriter
adjust.go
cell.go
stream.go
stream_test.go