Browse Source

Now not including mergeCells node if its empty - Excel cries if there are 0 mergecells

Colin Fox 10 years ago
parent
commit
dbca871163
2 changed files with 12 additions and 6 deletions
  1. 7 1
      sheet.go
  2. 5 5
      xmlWorksheet.go

+ 7 - 1
sheet.go

@@ -165,12 +165,18 @@ func (s *Sheet) makeXLSXSheet(refTable *RefTable, styles *xlsxStyleSheet) *xlsxW
 				endrow := r + cell.VMerge + 1
 				end := fmt.Sprintf("%s%d", numericToLetters(endcol), endrow)
 				mc.Ref = start + ":" + end
+				if worksheet.MergeCells == nil {
+					worksheet.MergeCells = &xlsxMergeCells{}
+				}
 				worksheet.MergeCells.Cells = append(worksheet.MergeCells.Cells, mc)
 			}
 		}
 		xSheet.Row = append(xSheet.Row, xRow)
 	}
-	worksheet.MergeCells.Count = len(worksheet.MergeCells.Cells)
+
+	if worksheet.MergeCells != nil {
+		worksheet.MergeCells.Count = len(worksheet.MergeCells.Cells)
+	}
 
 	worksheet.Cols = xlsxCols{Col: []xlsxCol{}}
 	for _, col := range s.Cols {

+ 5 - 5
xmlWorksheet.go

@@ -16,7 +16,7 @@ type xlsxWorksheet struct {
 	SheetFormatPr xlsxSheetFormatPr `xml:"sheetFormatPr"`
 	Cols          xlsxCols          `xml:"cols"`
 	SheetData     xlsxSheetData     `xml:"sheetData"`
-	MergeCells    xlsxMergeCells    `xml:"mergeCells"`
+	MergeCells    *xlsxMergeCells   `xml:"mergeCells,omitempty"`
 	PrintOptions  xlsxPrintOptions  `xml:"printOptions"`
 	PageMargins   xlsxPageMargins   `xml:"pageMargins"`
 	PageSetUp     xlsxPageSetUp     `xml:"pageSetup"`
@@ -232,9 +232,9 @@ type xlsxMergeCell struct {
 }
 
 type xlsxMergeCells struct {
-	XMLName xml.Name        `xml:"mergeCells"`
-	Count   int             `xml:"count,attr"`
-	Cells   []xlsxMergeCell `xml:"mergeCell"`
+	XMLName xml.Name        //`xml:"mergeCells,omitempty"`
+	Count   int             `xml:"count,attr,omitempty"`
+	Cells   []xlsxMergeCell `xml:"mergeCell,omitempty"`
 }
 
 // xlsxC directly maps the c element in the namespace
@@ -312,6 +312,6 @@ func newXlsxWorksheet() (worksheet *xlsxWorksheet) {
 	worksheet.HeaderFooter.OddFooter = make([]xlsxOddFooter, 1)
 	worksheet.HeaderFooter.OddFooter[0] = xlsxOddFooter{Content: `&C&"Times New Roman,Regular"&12Page &P`}
 
-	worksheet.MergeCells.Count = 0
+	//worksheet.MergeCells.Count = 0
 	return
 }