diff options
author | Ri Xu <xuri.me@gmail.com> | 2016-09-05 16:37:15 +0800 |
---|---|---|
committer | Ri Xu <xuri.me@gmail.com> | 2016-09-05 16:37:15 +0800 |
commit | 50863294f9d6f2ecc399d06f1b3c2312c4bdce10 (patch) | |
tree | 0cc7513dd3c56eef889432f27da1186288a2ed98 /file.go | |
parent | 956a4627d1f2b78172eaaf6078209d4cf8e64ce2 (diff) |
Fix issue #2 change project to object-oriented style and update readme file.
Diffstat (limited to 'file.go')
-rw-r--r-- | file.go | 60 |
1 files changed, 44 insertions, 16 deletions
@@ -9,25 +9,53 @@ import ( // CreateFile provide function to create new file by default template // For example: // xlsx := CreateFile() -func CreateFile() map[string]string { +func CreateFile() *File { file := make(map[string]string) - file = saveFileList(file, `_rels/.rels`, templateRels) - file = saveFileList(file, `docProps/app.xml`, templateDocpropsApp) - file = saveFileList(file, `docProps/core.xml`, templateDocpropsCore) - file = saveFileList(file, `xl/_rels/workbook.xml.rels`, templateWorkbookRels) - file = saveFileList(file, `xl/theme/theme1.xml`, templateTheme) - file = saveFileList(file, `xl/worksheets/sheet1.xml`, templateSheet) - file = saveFileList(file, `xl/styles.xml`, templateStyles) - file = saveFileList(file, `xl/workbook.xml`, templateWorkbook) - file = saveFileList(file, `[Content_Types].xml`, templateContentTypes) - return file + file[`_rels/.rels`] = templateRels + file[`docProps/app.xml`] = templateDocpropsApp + file[`docProps/core.xml`] = templateDocpropsCore + file[`xl/_rels/workbook.xml.rels`] = templateWorkbookRels + file[`xl/theme/theme1.xml`] = templateTheme + file[`xl/worksheets/sheet1.xml`] = templateSheet + file[`xl/styles.xml`] = templateStyles + file[`xl/workbook.xml`] = templateWorkbook + file[`[Content_Types].xml`] = templateContentTypes + return &File{ + XLSX: file, + } +} + +// Save provide function override the xlsx file with origin path. +func (f *File) Save() error { + buf := new(bytes.Buffer) + w := zip.NewWriter(buf) + for path, content := range f.XLSX { + f, err := w.Create(path) + if err != nil { + return err + } + _, err = f.Write([]byte(content)) + if err != nil { + return err + } + } + err := w.Close() + if err != nil { + return err + } + file, err := os.OpenFile(f.Path, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666) + if err != nil { + return err + } + buf.WriteTo(file) + return err } -// Save after create or update to an xlsx file at the provided path. -func Save(files map[string]string, name string) error { +// WriteTo provide function create or update to an xlsx file at the provided path. +func (f *File) WriteTo(name string) error { buf := new(bytes.Buffer) w := zip.NewWriter(buf) - for path, content := range files { + for path, content := range f.XLSX { f, err := w.Create(path) if err != nil { return err @@ -41,10 +69,10 @@ func Save(files map[string]string, name string) error { if err != nil { return err } - f, err := os.OpenFile(name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666) + file, err := os.OpenFile(name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666) if err != nil { return err } - buf.WriteTo(f) + buf.WriteTo(file) return err } |