123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package xlsx
- import (
- "bytes"
- "encoding/xml"
- . "gopkg.in/check.v1"
- )
- type WorkbookSuite struct{}
- var _ = Suite(&WorkbookSuite{})
- // Test we can succesfully unmarshal the workbook.xml file from within
- // an XLSX file and return a xlsxWorkbook struct (and associated
- // children).
- func (w *WorkbookSuite) TestUnmarshallWorkbookXML(c *C) {
- var buf = bytes.NewBufferString(
- `<?xml version="1.0"
- encoding="UTF-8"
- standalone="yes"?>
- <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
- xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <fileVersion appName="xl"
- lastEdited="4"
- lowestEdited="4"
- rupBuild="4506"/>
- <workbookPr defaultThemeVersion="124226" date1904="true"/>
- <bookViews>
- <workbookView xWindow="120"
- yWindow="75"
- windowWidth="15135"
- windowHeight="7620"/>
- </bookViews>
- <sheets>
- <sheet name="Sheet1"
- sheetId="1"
- r:id="rId1"
- state="visible"/>
- <sheet name="Sheet2"
- sheetId="2"
- r:id="rId2"
- state="hidden"/>
- <sheet name="Sheet3"
- sheetId="3"
- r:id="rId3"
- state="veryHidden"/>
- </sheets>
- <definedNames>
- <definedName name="monitors" comment="this is the comment"
- description="give cells a name"
- localSheetId="0">Sheet1!$A$1533</definedName>
- </definedNames>
- <calcPr calcId="125725"/>
- </workbook>`)
- var workbook *xlsxWorkbook
- workbook = new(xlsxWorkbook)
- err := xml.NewDecoder(buf).Decode(workbook)
- c.Assert(err, IsNil)
- c.Assert(workbook.FileVersion.AppName, Equals, "xl")
- c.Assert(workbook.FileVersion.LastEdited, Equals, "4")
- c.Assert(workbook.FileVersion.LowestEdited, Equals, "4")
- c.Assert(workbook.FileVersion.RupBuild, Equals, "4506")
- c.Assert(workbook.WorkbookPr.DefaultThemeVersion, Equals, "124226")
- c.Assert(workbook.WorkbookPr.Date1904, Equals, true)
- c.Assert(workbook.BookViews.WorkBookView, HasLen, 1)
- workBookView := workbook.BookViews.WorkBookView[0]
- c.Assert(workBookView.XWindow, Equals, "120")
- c.Assert(workBookView.YWindow, Equals, "75")
- c.Assert(workBookView.WindowWidth, Equals, 15135)
- c.Assert(workBookView.WindowHeight, Equals, 7620)
- c.Assert(workbook.Sheets.Sheet, HasLen, 3)
- sheet := workbook.Sheets.Sheet[0]
- c.Assert(sheet.Id, Equals, "rId1")
- c.Assert(sheet.Name, Equals, "Sheet1")
- c.Assert(sheet.SheetId, Equals, "1")
- c.Assert(sheet.State, Equals, "visible")
- c.Assert(workbook.DefinedNames.DefinedName, HasLen, 1)
- dname := workbook.DefinedNames.DefinedName[0]
- c.Assert(dname.Data, Equals, "Sheet1!$A$1533")
- c.Assert(dname.LocalSheetID, Equals, 0)
- c.Assert(dname.Name, Equals, "monitors")
- c.Assert(dname.Comment, Equals, "this is the comment")
- c.Assert(dname.Description, Equals, "give cells a name")
- c.Assert(workbook.CalcPr.CalcId, Equals, "125725")
- }
- // Test we can marshall a Workbook to xml
- func (w *WorkbookSuite) TestMarshallWorkbook(c *C) {
- var workbook *xlsxWorkbook
- workbook = new(xlsxWorkbook)
- workbook.FileVersion = xlsxFileVersion{}
- workbook.FileVersion.AppName = "xlsx"
- workbook.WorkbookPr = xlsxWorkbookPr{BackupFile: false}
- workbook.BookViews = xlsxBookViews{}
- workbook.BookViews.WorkBookView = make([]xlsxWorkBookView, 1)
- workbook.BookViews.WorkBookView[0] = xlsxWorkBookView{}
- workbook.Sheets = xlsxSheets{}
- workbook.Sheets.Sheet = make([]xlsxSheet, 1)
- workbook.Sheets.Sheet[0] = xlsxSheet{Name: "sheet1", SheetId: "1", Id: "rId2"}
- body, err := xml.Marshal(workbook)
- c.Assert(err, IsNil)
- expectedWorkbook := `<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><fileVersion appName="xlsx"></fileVersion><workbookPr date1904="false"></workbookPr><workbookProtection></workbookProtection><bookViews><workbookView></workbookView></bookViews><sheets><sheet name="sheet1" sheetId="1" xmlns:relationships="http://schemas.openxmlformats.org/officeDocument/2006/relationships" relationships:id="rId2"></sheet></sheets><definedNames></definedNames><calcPr></calcPr></workbook>`
- c.Assert(string(body), Equals, expectedWorkbook)
- }
|