38fab4e632
This problem is the same as #1238, which was resolved by #1239. For that issue, the fix was to check in one place whether $this->mapCellXfIndex[$xfIndex] was set before using it. The sample spreadsheet supplied as a description for this problem had exactly the same problem in 2 other places in the code. In addition, there were 7 other places in the code where that particular item was used unchecked. This fix corrects all 9 locations. The spreadsheet supplied with the problem is used as the basis for some new tests, which particularly test column dimensions and styles, the problems involved in this case.
47 lines
1.7 KiB
PHP
47 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Reader;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Reader\Xls;
|
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
|
|
|
class XlsTest extends AbstractFunctional
|
|
{
|
|
/**
|
|
* Test load Xls file.
|
|
*/
|
|
public function testLoadXlsSample(): void
|
|
{
|
|
$filename = 'tests/data/Reader/XLS/sample.xls';
|
|
$reader = new Xls();
|
|
$spreadsheet = $reader->load($filename);
|
|
self::assertEquals('Title', $spreadsheet->getSheet(0)->getCell('A1')->getValue());
|
|
}
|
|
|
|
/**
|
|
* Test load Xls file with invalid xfIndex.
|
|
*/
|
|
public function testLoadXlsBug1505(): void
|
|
{
|
|
$filename = 'tests/data/Reader/XLS/bug1505.xls';
|
|
$reader = new Xls();
|
|
$spreadsheet = $reader->load($filename);
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
$col = $sheet->getHighestColumn();
|
|
$row = $sheet->getHighestRow();
|
|
|
|
$newspreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
|
|
$newsheet = $newspreadsheet->getActiveSheet();
|
|
$newcol = $newsheet->getHighestColumn();
|
|
$newrow = $newsheet->getHighestRow();
|
|
|
|
self::assertEquals($spreadsheet->getSheetCount(), $newspreadsheet->getSheetCount());
|
|
self::assertEquals($sheet->getTitle(), $newsheet->getTitle());
|
|
self::assertEquals($sheet->getColumnDimensions(), $newsheet->getColumnDimensions());
|
|
self::assertEquals($col, $newcol);
|
|
self::assertEquals($row, $newrow);
|
|
self::assertEquals($sheet->getCell('A1')->getFormattedValue(), $newsheet->getCell('A1')->getFormattedValue());
|
|
self::assertEquals($sheet->getCell("$col$row")->getFormattedValue(), $newsheet->getCell("$col$row")->getFormattedValue());
|
|
}
|
|
}
|