Table name is now case insensitive

Table name comparison changed to UTF-8 aware and case insensitive
This commit is contained in:
aswinkumar863 2022-04-23 18:42:11 +05:30
parent 1d99dc8d76
commit d414f139f1
No known key found for this signature in database
GPG Key ID: 8A69BFA6AEF8FA3E
4 changed files with 7 additions and 4 deletions

View File

@ -4,6 +4,7 @@ namespace PhpOffice\PhpSpreadsheet\Worksheet;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
use PhpOffice\PhpSpreadsheet\Worksheet\Table\TableStyle;
class Table
@ -226,10 +227,11 @@ class Table
{
if ($this->name !== '' && $worksheet !== null) {
$spreadsheet = $worksheet->getParent();
$tableName = StringHelper::strToUpper($this->name);
foreach ($spreadsheet->getWorksheetIterator() as $sheet) {
foreach ($sheet->getTableCollection() as $table) {
if ($table->getName() === $this->name) {
if (StringHelper::strToUpper($table->getName()) === $tableName) {
throw new PhpSpreadsheetException("Workbook already contains a table named '{$this->name}'");
}
}

View File

@ -2158,8 +2158,9 @@ class Worksheet implements IComparable
*/
public function removeTableByName(string $name): self
{
$name = Shared\StringHelper::strToUpper($name);
foreach ($this->tableCollection as $key => $table) {
if ($table->getName() === $name) {
if (Shared\StringHelper::strToUpper($table->getName()) === $name) {
unset($this->tableCollection[$key]);
}
}

View File

@ -18,7 +18,7 @@ class RemoveTableTest extends SetupTeardown
self::assertEquals(1, $sheet->getTableCollection()->count());
$sheet->removeTableByName('Table1');
$sheet->removeTableByName('table1'); // case insensitive
self::assertEquals(0, $sheet->getTableCollection()->count());
}

View File

@ -87,7 +87,7 @@ class TableTest extends SetupTeardown
$sheet->addTable($table1);
$table2 = new Table();
$table2->setName('Table_1');
$table2->setName('table_1'); // case insensitive
$sheet->addTable($table2);
}