| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- package xlsx
- import (
- "archive/zip"
- "io"
- "os"
- "xml"
- )
- 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 XLSXFileVersion struct {
- AppName string "attr"
- LastEdited string "attr"
- LowestEdited string "attr"
- RupBuild string "attr"
- }
- type XLSXWorkbookPr struct {
- DefaultThemeVersion string "attr"
- }
- type XLSXWorkBookView struct {
- XWindow string "attr"
- YWindow string "attr"
- WindowWidth string "attr"
- WindowHeight string "attr"
- }
- type XLSXSheet struct {
- Name string "attr"
- SheetId string "attr"
- Id string "attr"
- }
- type XLSXDefinedName struct {
- Data string "chardata"
- Name string "attr"
- LocalSheetID string "attr"
- }
- type XLSXCalcPr struct {
- CalcId string "attr"
- }
- type XLSXBookViews struct {
- WorkBookView []XLSXWorkBookView
- }
- type XLSXSheets struct {
- Sheet []XLSXSheet
- }
- type XLSXDefinedNames struct {
- DefinedName []XLSXDefinedName
- }
- type XLSXWorkbook struct {
- FileVersion XLSXFileVersion
- WorkbookPr XLSXWorkbookPr
- BookViews XLSXBookViews
- Sheets XLSXSheets
- DefinedNames XLSXDefinedNames
- CalcPr XLSXCalcPr
- }
- type XLSXSheetStruct struct {
- }
- type XLSXFile struct {
- Sheets map [string]*XLSXSheetStruct
- }
- type XLSXFileInterface interface {
- GetSheet(sheetname string) XLSXSheetStruct
- }
- func readSheetsFromZipFile(f *zip.File) os.Error {
- var workbook *XLSXWorkbook
- var error os.Error
- var rc io.ReadCloser
- workbook = new(XLSXWorkbook)
- rc, error = f.Open()
- if error != nil {
- return error
- }
- error = xml.Unmarshal(rc, workbook)
- if error != nil {
- return error
- }
- return nil
- }
- func OpenXLSXFile(filename string) (x *XLSXFile, e os.Error) {
- var f *zip.ReadCloser
- var error os.Error
- var xlsxFile *XLSXFile
- var v *zip.File
- f, error = zip.OpenReader(filename)
- if error != nil {
- return nil, error
- }
- for _, v = range f.File {
- if v.Name == "xl/workbook.xml" {
- readSheetsFromZipFile(v)
- }
- }
- xlsxFile = new(XLSXFile)
- f.Close()
- return xlsxFile, nil
- }
|