@@ -345,7 +345,8 @@ func TestLib(t *testing.T) {
345345 file .referenceTable = MakeSharedStringRefTable (sst )
346346 sheet , err := NewSheet ("test" )
347347 c .Assert (err , qt .IsNil )
348- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
348+ lt := make (hyperlinkTable )
349+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
349350 c .Assert (err , qt .IsNil )
350351 c .Assert (sheet .MaxRow , qt .Equals , 2 )
351352 c .Assert (sheet .MaxCol , qt .Equals , 2 )
@@ -439,9 +440,12 @@ func TestLib(t *testing.T) {
439440
440441 sheet , err := NewSheetWithCellStore ("test" , constructor )
441442 c .Assert (err , qt .IsNil )
443+
444+ lt := make (hyperlinkTable )
445+
442446 // Discarding all return values; this test is a regression for
443447 // a panic due to an "index out of range."
444- readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
448+ readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
445449 })
446450
447451 csRunC (c , "ReadRowsFromSheetWithLeadingEmptyRows" , func (c * qt.C , constructor CellStoreConstructor ) {
@@ -489,7 +493,9 @@ func TestLib(t *testing.T) {
489493 file .referenceTable = MakeSharedStringRefTable (sst )
490494 sheet , err := NewSheetWithCellStore ("test" , constructor )
491495 c .Assert (err , qt .IsNil )
492- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
496+ lt := make (hyperlinkTable )
497+
498+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
493499 c .Assert (err , qt .IsNil )
494500 c .Assert (sheet .MaxRow , qt .Equals , 5 )
495501 c .Assert (sheet .MaxCol , qt .Equals , 1 )
@@ -569,7 +575,9 @@ func TestLib(t *testing.T) {
569575 file .referenceTable = MakeSharedStringRefTable (sst )
570576 sheet , err := NewSheetWithCellStore ("test" , constructor )
571577 c .Assert (err , qt .IsNil )
572- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
578+ lt := make (hyperlinkTable )
579+
580+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
573581 c .Assert (err , qt .IsNil )
574582 c .Assert (sheet .MaxRow , qt .Equals , 2 )
575583 c .Assert (sheet .MaxCol , qt .Equals , 4 )
@@ -715,7 +723,9 @@ func TestLib(t *testing.T) {
715723 file .referenceTable = MakeSharedStringRefTable (sst )
716724 sheet , err := NewSheetWithCellStore ("test" , constructor )
717725 c .Assert (err , qt .IsNil )
718- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
726+ lt := make (hyperlinkTable )
727+
728+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
719729 c .Assert (err , qt .IsNil )
720730 c .Assert (sheet .MaxRow , qt .Equals , 3 )
721731 c .Assert (sheet .MaxCol , qt .Equals , 3 )
@@ -761,7 +771,9 @@ func TestLib(t *testing.T) {
761771 file .referenceTable = MakeSharedStringRefTable (sst )
762772 sheet , err := NewSheetWithCellStore ("test" , constructor )
763773 c .Assert (err , qt .IsNil )
764- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
774+ lt := make (hyperlinkTable )
775+
776+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
765777 c .Assert (err , qt .IsNil )
766778 c .Assert (sheet .MaxCol , qt .Equals , 4 )
767779 c .Assert (sheet .MaxRow , qt .Equals , 8 )
@@ -876,7 +888,10 @@ func TestLib(t *testing.T) {
876888 file .referenceTable = MakeSharedStringRefTable (sst )
877889 sheet , err := NewSheetWithCellStore ("test" , constructor )
878890 c .Assert (err , qt .IsNil )
879- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
891+
892+ lt := make (hyperlinkTable )
893+
894+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
880895 c .Assert (err , qt .IsNil )
881896 c .Assert (sheet .MaxRow , qt .Equals , 2 )
882897 c .Assert (sheet .MaxCol , qt .Equals , 4 )
@@ -955,7 +970,9 @@ func TestLib(t *testing.T) {
955970 file .referenceTable = MakeSharedStringRefTable (sst )
956971 sheet , err := NewSheetWithCellStore ("test" , constructor )
957972 c .Assert (err , qt .IsNil )
958- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
973+ lt := make (hyperlinkTable )
974+
975+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
959976 c .Assert (err , qt .IsNil )
960977 c .Assert (sheet .MaxRow , qt .Equals , 1 )
961978 c .Assert (sheet .MaxCol , qt .Equals , 6 )
@@ -1032,7 +1049,9 @@ func TestLib(t *testing.T) {
10321049 file .referenceTable = MakeSharedStringRefTable (sst )
10331050 sheet , err := NewSheetWithCellStore ("test" , constructor )
10341051 c .Assert (err , qt .IsNil )
1035- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
1052+ lt := make (hyperlinkTable )
1053+
1054+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
10361055 c .Assert (err , qt .IsNil )
10371056 c .Assert (sheet .MaxRow , qt .Equals , 1 )
10381057 c .Assert (sheet .MaxCol , qt .Equals , 2 )
@@ -1175,7 +1194,10 @@ func TestLib(t *testing.T) {
11751194 file .cellStoreConstructor = constructor
11761195 sheet , err := NewSheetWithCellStore ("test" , constructor )
11771196 c .Assert (err , qt .IsNil )
1178- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
1197+
1198+ lt := make (hyperlinkTable )
1199+
1200+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
11791201 c .Assert (err , qt .IsNil )
11801202 c .Assert (sheet .MaxCol , qt .Equals , 3 )
11811203 c .Assert (sheet .MaxRow , qt .Equals , 2 )
@@ -1320,7 +1342,10 @@ func TestLib(t *testing.T) {
13201342
13211343 sheet , err := NewSheetWithCellStore ("test" , constructor )
13221344 c .Assert (err , qt .IsNil )
1323- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
1345+
1346+ lt := make (hyperlinkTable )
1347+
1348+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
13241349 c .Assert (err , qt .IsNil )
13251350 row , err := sheet .Row (3 )
13261351 c .Assert (err , qt .Equals , nil )
@@ -1414,7 +1439,8 @@ func TestReadRowsFromSheet(t *testing.T) {
14141439 worksheet .mapMergeCells ()
14151440 sheet , err := NewSheetWithCellStore ("test" , constructor )
14161441 c .Assert (err , qt .IsNil )
1417- err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit )
1442+ lt := make (hyperlinkTable )
1443+ err = readRowsFromSheet (worksheet , file , sheet , NoRowLimit , lt )
14181444 c .Assert (err , qt .IsNil )
14191445 row , err := sheet .Row (0 )
14201446 c .Assert (err , qt .Equals , nil )
@@ -1772,3 +1798,27 @@ func TestGrowRowCellSliceDuringFileLoad(t *testing.T) {
17721798 c .Assert (err , qt .Equals , nil )
17731799 })
17741800}
1801+
1802+ func TestIssueSheetsWithHyperlinksHaveLegibleValues (t * testing.T ) {
1803+ c := qt .New (t )
1804+
1805+ // Issue 574 concerned a sheet with cell values that
1806+ // incorrectly showed up blank. This issue was caused by
1807+ // mutable state being abused during the data load
1808+ // (essentially using Sheet.Row(n) before the sheet was fully
1809+ // loaded. The file: testdocs/issue574.xlsx illustrates this issue.
1810+ f , err := OpenFile ("testdocs/issue574.xlsx" )
1811+ c .Assert (err , qt .Equals , nil )
1812+
1813+ sheet , ok := f .Sheet ["Sheet1" ]
1814+ c .Assert (ok , qt .Equals , true )
1815+ c .Assert (sheet .MaxRow , qt .Equals , 4 )
1816+ sheet .ForEachRow (func (r * Row ) error {
1817+ r .ForEachCell (func (cell * Cell ) error {
1818+ c .Assert (cell , qt .Not (qt .IsNil ))
1819+ c .Assert (cell .Value , qt .Not (qt .Equals ), "" )
1820+ return nil
1821+ })
1822+ return nil
1823+ })
1824+ }
0 commit comments