outputFile !== '') {
unlink($this->outputFile);
$this->outputFile = '';
}
}
public function testDrawingWithPoundUrl(): void
{
$path = 'samples/images/blue_square.png';
$spreadsheet = new Spreadsheet();
$sheet1 = $spreadsheet->getActiveSheet();
$sheet1->setTitle('sheet1');
$sheet2 = $spreadsheet->createSheet();
$sheet2->setTitle('sheet2');
$drawing = new Drawing();
$drawing->setWorksheet($sheet1);
$drawing->setName('Blue Square');
$drawing->setPath($path);
$drawing->setCoordinates('E1');
$drawing->setCoordinates2('F5');
$hyperlink = new Hyperlink('#sheet2!C3', 'Click here');
$drawing->setHyperlink($hyperlink);
$writer = new XlsxWriter($spreadsheet);
$this->outputFile = File::temporaryFilename();
$writer->save($this->outputFile);
$spreadsheet->disconnectWorksheets();
$file = 'zip://';
$file .= $this->outputFile;
$file .= '#xl/drawings/_rels/drawing1.xml.rels';
$data = file_get_contents($file);
self::assertNotFalse($data);
self::assertStringContainsString('', $data, 'url unchanged by write');
$reader = new XlsxReader();
$reloadedSpreadsheet = $reader->load($this->outputFile);
$rsheet1 = $reloadedSpreadsheet->getSheetByName('sheet1');
self::assertNotNull($rsheet1);
$drawings = $rsheet1->getDrawingCollection();
self::assertCount(1, $drawings);
$drawing0 = $drawings[0];
self::assertSame('sheet://sheet2!C3', $drawing0?->getHyperlink()?->getUrl(), 'url was changed on read');
$reloadedSpreadsheet->disconnectWorksheets();
}
public function testDrawingWithSheetUrl(): void
{
$path = 'samples/images/blue_square.png';
$spreadsheet = new Spreadsheet();
$sheet1 = $spreadsheet->getActiveSheet();
$sheet1->setTitle('sheet1');
$sheet2 = $spreadsheet->createSheet();
$sheet2->setTitle('sheet2');
$drawing = new Drawing();
$drawing->setWorksheet($sheet1);
$drawing->setName('Blue Square');
$drawing->setPath($path);
$drawing->setCoordinates('E1');
$drawing->setCoordinates2('F5');
$hyperlink = new Hyperlink('sheet://sheet2!C3', 'Click here');
$drawing->setHyperlink($hyperlink);
$writer = new XlsxWriter($spreadsheet);
$this->outputFile = File::temporaryFilename();
$writer->save($this->outputFile);
$spreadsheet->disconnectWorksheets();
$file = 'zip://';
$file .= $this->outputFile;
$file .= '#xl/drawings/_rels/drawing1.xml.rels';
$data = file_get_contents($file);
self::assertNotFalse($data);
self::assertStringContainsString('', $data, 'url changed by write');
$reader = new XlsxReader();
$reloadedSpreadsheet = $reader->load($this->outputFile);
$rsheet1 = $reloadedSpreadsheet->getSheetByName('sheet1');
self::assertNotNull($rsheet1);
$drawings = $rsheet1->getDrawingCollection();
self::assertCount(1, $drawings);
$drawing0 = $drawings[0];
self::assertSame('sheet://sheet2!C3', $drawing0?->getHyperlink()?->getUrl(), 'url was changed back on read');
$reloadedSpreadsheet->disconnectWorksheets();
}
}