summaryrefslogtreecommitdiff
path: root/excelize.go
diff options
context:
space:
mode:
authorJosh Fyne <josh.fyne@essencedigital.com>2017-02-16 13:25:55 -0500
committerJosh Fyne <josh.fyne@essencedigital.com>2017-02-16 13:25:55 -0500
commitd9f4a2f154f8d4242572a2fcebdf76b91ed86348 (patch)
treee9ca6a5f8d1fe54a91fdaa470122b81e0f0d36e7 /excelize.go
parent0833a9d5dab846ed01be52fa59c97ede36ee4a93 (diff)
Standardize input and output
Diffstat (limited to 'excelize.go')
-rw-r--r--excelize.go34
1 files changed, 24 insertions, 10 deletions
diff --git a/excelize.go b/excelize.go
index bc37c0a..3c81db2 100644
--- a/excelize.go
+++ b/excelize.go
@@ -4,6 +4,9 @@ import (
"archive/zip"
"bytes"
"encoding/xml"
+ "io"
+ "io/ioutil"
+ "os"
"strconv"
"strings"
)
@@ -19,20 +22,31 @@ type File struct {
// OpenFile take the name of an XLSX file and returns a populated XLSX file
// struct for it.
func OpenFile(filename string) (*File, error) {
- var f *zip.ReadCloser
- var err error
- file := make(map[string]string)
- c := make(map[string]bool)
- sheetCount := 0
- f, err = zip.OpenReader(filename)
+ file, err := os.Open(filename)
if err != nil {
- return &File{}, err
+ return nil, err
+ }
+ b, err := ioutil.ReadAll(file)
+ if err != nil {
+ return nil, err
+ }
+ return OpenReader(bytes.NewReader(b), int64(len(b)))
+}
+
+// OpenReader take an io.Reader and return a populated XLSX file.
+func OpenReader(r io.ReaderAt, size int64) (*File, error) {
+ zr, err := zip.NewReader(r, size)
+ if err != nil {
+ return nil, err
+ }
+ file, sheetCount, err := ReadZipReader(zr)
+ if err != nil {
+ return nil, err
}
- file, sheetCount, _ = ReadZip(f)
return &File{
- checked: c,
+ checked: make(map[string]bool),
XLSX: file,
- Path: filename,
+ Path: "",
SheetCount: sheetCount,
}, nil
}