Browse Source

Merge pull request #7 from frogs/master

bug fix for incorrect values in Sheet ID (for our purposes) when some sheets have been deleted.
Geoffrey J. Teale 13 years ago
parent
commit
a6255da06b
3 changed files with 36 additions and 2 deletions
  1. BIN
      .DS_Store
  2. 35 1
      lib.go
  3. 1 1
      workbook.go

BIN
.DS_Store


+ 35 - 1
lib.go

@@ -199,6 +199,35 @@ func makeRowFromSpan(spans string) *Row {
 	return row
 	return row
 }
 }
 
 
+// get the max column 
+// return the cells of columns
+func makeRowFromRaw(rawrow xlsxRow) *Row {
+	var upper int
+	var row *Row
+	var cell *Cell
+
+	row = new(Row)
+	upper = 0
+
+	for _, rawcell := range rawrow.C {
+		x, _, error := getCoordsFromCellIDString(rawcell.R)
+		if error != nil {
+			panic(fmt.Sprintf("Invalid Cell Coord, %s\n", rawcell.R))
+		}
+		if x  > upper {
+			upper = x
+		}
+	}
+
+	row.Cells = make([]*Cell, upper)
+	for i := 0; i < upper; i++ {
+		cell = new(Cell)
+		cell.data = ""
+		row.Cells[i] = cell
+	}
+	return row
+}
+
 // getValueFromCellData attempts to extract a valid value, usable in CSV form from the raw cell value.
 // getValueFromCellData attempts to extract a valid value, usable in CSV form from the raw cell value.
 // Note - this is not actually general enough - we should support retaining tabs and newlines.
 // Note - this is not actually general enough - we should support retaining tabs and newlines.
 func getValueFromCellData(rawcell xlsxC, reftable []string) string {
 func getValueFromCellData(rawcell xlsxC, reftable []string) string {
@@ -228,7 +257,12 @@ func readRowsFromSheet(Worksheet *xlsxWorksheet, reftable []string) []*Row {
 
 
 	rows = make([]*Row, len(Worksheet.SheetData.Row))
 	rows = make([]*Row, len(Worksheet.SheetData.Row))
 	for i, rawrow := range Worksheet.SheetData.Row {
 	for i, rawrow := range Worksheet.SheetData.Row {
-		row = makeRowFromSpan(rawrow.Spans)
+		// range is not empty
+		if len(rawrow.Spans) != 0 {
+			row = makeRowFromSpan(rawrow.Spans)
+		} else {
+			row = makeRowFromRaw(rawrow)
+		}
 		for _, rawcell := range rawrow.C {
 		for _, rawcell := range rawrow.C {
 			x, _, error := getCoordsFromCellIDString(rawcell.R)
 			x, _, error := getCoordsFromCellIDString(rawcell.R)
 			if error != nil {
 			if error != nil {

+ 1 - 1
workbook.go

@@ -109,7 +109,7 @@ func getWorksheetFromSheet(sheet xlsxSheet, worksheets map[string]*zip.File) (*x
 	var worksheet *xlsxWorksheet
 	var worksheet *xlsxWorksheet
 	var error error
 	var error error
 	worksheet = new(xlsxWorksheet)
 	worksheet = new(xlsxWorksheet)
-	sheetName := fmt.Sprintf("sheet%s", sheet.SheetId)
+	sheetName := fmt.Sprintf("sheet%s", sheet.Id[3:])
 	f := worksheets[sheetName]
 	f := worksheets[sheetName]
 	rc, error = f.Open()
 	rc, error = f.Open()
 	if error != nil {
 	if error != nil {