Просмотр исходного кода

Refactored internal types out to seperate files and renamed the high-level "public facing" structs - slowly moving towards the idea of a two layer API.

Geoffrey J. Teale 14 лет назад
Родитель
Сommit
d8266296ab
5 измененных файлов с 104 добавлено и 98 удалено
  1. 5 1
      Makefile
  2. 11 86
      lib.go
  3. 11 11
      lib_test.go
  4. 18 0
      sharedstrings.go
  5. 59 0
      worksheet.go

+ 5 - 1
Makefile

@@ -2,6 +2,10 @@ include $(GOROOT)/src/Make.inc
 
 TARG=github.com/tealeg/xslx
 GOFILES=\
-	lib.go
+	doc.go\
+	lib.go\
+	sharedstrings.go\
+	workbook.go\
+	worksheet.go\
 
 include $(GOROOT)/src/Make.pkg

+ 11 - 86
lib.go

@@ -15,91 +15,16 @@ func (e *XLSXReaderError) String() string {
 	return e.Error
 }
 
-type XLSXV struct {
-	Data string "chardata"
-}
-
-type XLSXC struct {
-	R string "attr"
-	T string "attr"
-	V XLSXV
-}
-
-type XLSXRow struct {
-	R     string "attr"
-	Spans string "attr"
-	C     []XLSXC
-}
-
-type XLSXSheetData struct {
-	Row []XLSXRow
-}
-
-type XLSXSheetFormatPr struct {
-	BaseColWidth     string "attr"
-	DefaultRowHeight string "attr"
-}
-
-type XLSXSelection struct {
-	ActiveCell string "attr"
-	SQRef      string "attr"
-}
-
-type XLSXSheetView struct {
-	TabSelected    string "attr"
-	WorkbookViewID string "attr"
-	Selection      XLSXSelection
-}
-
-type XLSXSheetViews struct {
-	SheetView []XLSXSheetView
-}
-
-type XLSXDimension struct {
-	Ref string "attr"
-}
-
-type XLSXWorksheet struct {
-	Dimension     XLSXDimension
-	SheetViews    XLSXSheetViews
-	SheetFormatPr XLSXSheetFormatPr
-	SheetData     XLSXSheetData
-}
-
-type XLSXT struct {
-	Data string "chardata"
-}
-
-type XLSXSI struct {
-	T XLSXT
-}
-
-type XLSXSST struct {
-	Count       string "attr"
-	UniqueCount string "attr"
-	SI          []XLSXSI
-}
-
-
-
-
-
-
-
-
-
-
-
-type XLSXSheetStruct struct {
+type Sheet struct {
 
 }
 
-type XLSXFile struct {
-	Sheets []*XLSXSheetStruct
+type File struct {
+	Sheets []*Sheet
 }
 
-type XLSXFileInterface interface {
-	GetSheet(sheetname string) XLSXSheetStruct
+type FileInterface interface {
+	GetSheet(sheetname string) Sheet
 }
 
 
@@ -116,7 +41,7 @@ func ResolveSharedString(reftable []string, index int) string {
 }
 
 
-func readSheetsFromZipFile(f *zip.File) ([]*XLSXSheetStruct, os.Error) {
+func readSheetsFromZipFile(f *zip.File) ([]*Sheet, os.Error) {
 	var workbook *XLSXWorkbook
 	var error os.Error
 	var rc io.ReadCloser
@@ -129,24 +54,24 @@ func readSheetsFromZipFile(f *zip.File) ([]*XLSXSheetStruct, os.Error) {
 	if error != nil {
 		return nil, error
 	}
-	sheets := make([]*XLSXSheetStruct, len(workbook.Sheets.Sheet))
+	sheets := make([]*Sheet, len(workbook.Sheets.Sheet))
 	for i, _ := range workbook.Sheets.Sheet {
-		sheet := new(XLSXSheetStruct)
+		sheet := new(Sheet)
 		sheets[i] = sheet
 	}
 	return sheets, nil
 }
 
-func OpenXLSXFile(filename string) (x *XLSXFile, e os.Error) {
+func OpenFile(filename string) (x *File, e os.Error) {
 	var f *zip.ReadCloser
 	var error os.Error
-	var xlsxFile *XLSXFile
+	var xlsxFile *File
 	var v *zip.File
 	f, error = zip.OpenReader(filename)
 	if error != nil {
 		return nil, error
 	}
-	xlsxFile = new(XLSXFile)
+	xlsxFile = new(File)
 	for _, v = range f.File {
 		if v.Name == "xl/workbook.xml" {
 			sheets, error := readSheetsFromZipFile(v)

+ 11 - 11
lib_test.go

@@ -9,25 +9,25 @@ import (
 	"xml"
 )
 
-func TestOpenXLSXFile(t *testing.T) {
-	var xlsxFile *XLSXFile
+func TestOpenFile(t *testing.T) {
+	var xlsxFile *File
 	var error os.Error
-	xlsxFile, error = OpenXLSXFile("testfile.xlsx")
+	xlsxFile, error = OpenFile("testfile.xlsx")
 	if error != nil {
 		t.Error(error.String())
 		return
 	}
 	if xlsxFile == nil {
-		t.Error("OpenXLSXFile returned nil XLSXFileInterface without generating an os.Error")
+		t.Error("OpenFile returned nil FileInterface without generating an os.Error")
 		return
 	}
 
 }
 
 func TestExtractSheets(t *testing.T) {
-	var xlsxFile *XLSXFile
-	var sheets []*XLSXSheetStruct
-	xlsxFile, _ = OpenXLSXFile("testfile.xlsx")
+	var xlsxFile *File
+	var sheets []*Sheet
+	xlsxFile, _ = OpenFile("testfile.xlsx")
 	sheets = xlsxFile.Sheets
 	if len(sheets) == 0 {
 		t.Error("No sheets read from XLSX file")
@@ -164,16 +164,16 @@ func TestUnmarshallSheet(t *testing.T) {
 }
 
 func TestCreateXSLXSheetStruct(t *testing.T) {
-	var xlsxFile *XLSXFile
+	var xlsxFile *File
 	var error os.Error
-	var sheet *XLSXSheetStruct
-	xlsxFile, error = OpenXLSXFile("testfile.xlsx")
+	var sheet *Sheet
+	xlsxFile, error = OpenFile("testfile.xlsx")
 	if error != nil {
 		t.Error(error.String())
 		return
 	}
 	if xlsxFile == nil {
-		t.Error("OpenXLSXFile returned a nil XLSXFile pointer but did not generate an error.")
+		t.Error("OpenFile returned a nil File pointer but did not generate an error.")
 		return
 	}
 	if len(xlsxFile.Sheets) == 0 {

+ 18 - 0
sharedstrings.go

@@ -0,0 +1,18 @@
+package xlsx
+
+
+type XLSXSST struct {
+	Count       string "attr"
+	UniqueCount string "attr"
+	SI          []XLSXSI
+}
+
+
+type XLSXSI struct {
+	T XLSXT
+}
+
+
+type XLSXT struct {
+	Data string "chardata"
+}

+ 59 - 0
worksheet.go

@@ -0,0 +1,59 @@
+package xlsx
+
+type XLSXWorksheet struct {
+	Dimension     XLSXDimension
+	SheetViews    XLSXSheetViews
+	SheetFormatPr XLSXSheetFormatPr
+	SheetData     XLSXSheetData
+}
+
+
+type XLSXDimension struct {
+	Ref string "attr"
+}
+
+type XLSXSheetViews struct {
+	SheetView []XLSXSheetView
+}
+
+
+type XLSXSheetView struct {
+	TabSelected    string "attr"
+	WorkbookViewID string "attr"
+	Selection      XLSXSelection
+}
+
+
+type XLSXSelection struct {
+	ActiveCell string "attr"
+	SQRef      string "attr"
+}
+
+type XLSXSheetFormatPr struct {
+	BaseColWidth     string "attr"
+	DefaultRowHeight string "attr"
+}
+
+type XLSXSheetData struct {
+	Row []XLSXRow
+}
+
+
+type XLSXRow struct {
+	R     string "attr"
+	Spans string "attr"
+	C     []XLSXC
+}
+
+
+type XLSXC struct {
+	R string "attr"
+	T string "attr"
+	V XLSXV
+}
+
+
+type XLSXV struct {
+	Data string "chardata"
+}
+