Browse Source

Fix #529, handle empty inline rich text

xuri 6 years ago
parent
commit
5d8365ca17
2 changed files with 13 additions and 1 deletions
  1. 4 1
      rows.go
  2. 9 0
      rows_test.go

+ 4 - 1
rows.go

@@ -279,7 +279,10 @@ func (xlsx *xlsxC) getValueFrom(f *File, d *xlsxSST) (string, error) {
 	case "str":
 		return f.formattedValue(xlsx.S, xlsx.V), nil
 	case "inlineStr":
-		return f.formattedValue(xlsx.S, xlsx.IS.String()), nil
+		if xlsx.IS != nil {
+			return f.formattedValue(xlsx.S, xlsx.IS.String()), nil
+		}
+		return f.formattedValue(xlsx.S, xlsx.V), nil
 	default:
 		return f.formattedValue(xlsx.S, xlsx.V), nil
 	}

+ 9 - 0
rows_test.go

@@ -706,6 +706,15 @@ func TestDuplicateRowInvalidRownum(t *testing.T) {
 	}
 }
 
+func TestGetValueFrom(t *testing.T) {
+	c := &xlsxC{T: "inlineStr"}
+	f := NewFile()
+	d := &xlsxSST{}
+	val, err := c.getValueFrom(f, d)
+	assert.NoError(t, err)
+	assert.Equal(t, "", val)
+}
+
 func TestErrSheetNotExistError(t *testing.T) {
 	err := ErrSheetNotExist{SheetName: "Sheet1"}
 	assert.EqualValues(t, err.Error(), "sheet Sheet1 is not exist")