mirror of
https://github.com/MickMake/GoSungrow.git
synced 2025-03-25 17:11:43 +01:00
51 lines
1014 B
Go
51 lines
1014 B
Go
package tablib
|
|
|
|
import (
|
|
"github.com/tealeg/xlsx"
|
|
)
|
|
|
|
// XLSX exports the Dataset as a byte array representing the .xlsx format.
|
|
func (d *Dataset) XLSX() (*Exportable, error) {
|
|
file := xlsx.NewFile()
|
|
if err := d.addXlsxSheetToFile(file, "Sheet 1"); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
b := newBuffer()
|
|
file.Write(b)
|
|
return newExportable(b), nil
|
|
}
|
|
|
|
// XLSX returns a XLSX representation of the Databook as an exportable.
|
|
func (d *Databook) XLSX() (*Exportable, error) {
|
|
file := xlsx.NewFile()
|
|
|
|
for _, s := range d.sheets {
|
|
s.dataset.addXlsxSheetToFile(file, s.title)
|
|
}
|
|
|
|
b := newBuffer()
|
|
file.Write(b)
|
|
return newExportable(b), nil
|
|
}
|
|
|
|
func (d *Dataset) addXlsxSheetToFile(file *xlsx.File, sheetName string) error {
|
|
sheet, err := file.AddSheet(sheetName)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
back := d.Records()
|
|
for i, r := range back {
|
|
row := sheet.AddRow()
|
|
for _, c := range r {
|
|
cell := row.AddCell()
|
|
cell.Value = c
|
|
if i == 0 {
|
|
cell.GetStyle().Font.Bold = true
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|