file.go 986 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package xlsx
  2. import (
  3. "archive/zip"
  4. )
  5. // File is a high level structure providing a slice of Sheet structs
  6. // to the user.
  7. type File struct {
  8. worksheets map[string]*zip.File
  9. referenceTable *RefTable
  10. styles *xlsxStyles
  11. Sheets []*Sheet // sheet access by index
  12. Sheet map[string]*Sheet // sheet access by name
  13. }
  14. // Create a new File
  15. func NewFile() (file *File) {
  16. file = &File{};
  17. file.Sheets = make([]*Sheet, 0, 100)
  18. file.Sheet = make(map[string]*Sheet)
  19. return
  20. }
  21. // OpenFile() take the name of an XLSX file and returns a populated
  22. // xlsx.File struct for it.
  23. func OpenFile(filename string) (*File, error) {
  24. var f *zip.ReadCloser
  25. f, err := zip.OpenReader(filename)
  26. if err != nil {
  27. return nil, err
  28. }
  29. return ReadZip(f)
  30. }
  31. // Add a new Sheet, with the provided name, to a File
  32. func (f *File) AddSheet(sheetName string) (sheet *Sheet) {
  33. sheet = &Sheet{}
  34. f.Sheets = append(f.Sheets, sheet)
  35. f.Sheet[sheetName] = sheet
  36. return sheet
  37. }