mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-14 20:16:34 +00:00
More Tests and a Sample
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
/** @var PhpOffice\PhpSpreadsheet\Helper\Sample $helper */
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
|
||||
$path = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'images/blue_square.png';
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$spreadsheet->getProperties()->setTitle('53_ImageOpacity');
|
||||
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->setTitle('Images in-cell and out');
|
||||
$sheet->setShowGridLines(false);
|
||||
|
||||
$helper->log('Add in-cell image to spreadsheet');
|
||||
$sheet->setCellValue('B1', 'inside');
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('Blue Square in-cell');
|
||||
$drawing->setPath($path);
|
||||
$sheet->getCell('B2')->setValue($drawing);
|
||||
|
||||
$helper->log('Add image over cell to spreadsheet');
|
||||
$sheet->setCellValue('C1', 'outside');
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('Blue Square out-of-cell');
|
||||
$drawing->setPath($path);
|
||||
$drawing->setCoordinates('C2');
|
||||
$drawing->setCoordinates2('D6');
|
||||
$drawing->setWorksheet($sheet);
|
||||
|
||||
$helper->log('In-cell supported only for Xlsx');
|
||||
$helper->write($spreadsheet, __FILE__, ['Xlsx']);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
@@ -338,6 +338,8 @@ class Cell implements Stringable
|
||||
case DataType::TYPE_DRAWING_IN_CELL:
|
||||
if ($value instanceof BaseDrawing) {
|
||||
$this->value = $value;
|
||||
} else {
|
||||
throw new SpreadsheetException('Item is not a drawing');
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -6,7 +6,10 @@ namespace PhpOffice\PhpSpreadsheetTests\Cell;
|
||||
|
||||
use ArgumentCountError;
|
||||
use PhpOffice\PhpSpreadsheet\Cell\Cell;
|
||||
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
||||
use PhpOffice\PhpSpreadsheet\Exception as SpreadsheetException;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use ReflectionMethod;
|
||||
@@ -57,4 +60,24 @@ class SetValueExplicitCellTest extends TestCase
|
||||
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
|
||||
public function testSetValueExplicitImage(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
try {
|
||||
$sheet->getCell('A1')->setValueExplicit(1, DataType::TYPE_DRAWING_IN_CELL);
|
||||
self::fail('Should have thrown exception');
|
||||
} catch (SpreadsheetException $e) {
|
||||
self::assertStringContainsString('not a drawing', $e->getMessage());
|
||||
}
|
||||
|
||||
$objDrawing = new Drawing();
|
||||
$directory = 'tests/data/Writer/XLSX';
|
||||
$objDrawing->setPath($directory . '/blue_square.png');
|
||||
$sheet->getCell('C2')->setValueExplicit($objDrawing, DataType::TYPE_DRAWING_IN_CELL);
|
||||
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ namespace PhpOffice\PhpSpreadsheetTests;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\DefinedName;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
@@ -181,4 +182,31 @@ class SpreadsheetCopyCloneTest extends TestCase
|
||||
self::assertSame($pruning, $calc2->getBranchPruningEnabled());
|
||||
self::assertSame($return, $calc2->getInstanceArrayReturnType());
|
||||
}
|
||||
|
||||
#[DataProvider('providerCopyClone')]
|
||||
public function testCopyCloneImageInCell(string $type): void
|
||||
{
|
||||
$spreadsheet = $this->spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->setTitle('original1');
|
||||
$objDrawing = new Drawing();
|
||||
$directory = 'tests/data/Writer/XLSX';
|
||||
$path = $directory . '/blue_square.png';
|
||||
$objDrawing->setPath($path);
|
||||
$sheet->getCell('C2')->setValue($objDrawing);
|
||||
|
||||
if ($type === 'copy') {
|
||||
$spreadsheet2 = $this->spreadsheet2 = $spreadsheet->copy();
|
||||
} else {
|
||||
$spreadsheet2 = $this->spreadsheet2 = clone $spreadsheet;
|
||||
}
|
||||
$copySheet = $spreadsheet2->getSheetByNameOrThrow('original1');
|
||||
$collection = $copySheet->getInCellDrawingCollection();
|
||||
self::assertCount(1, $collection);
|
||||
$image = $collection[0];
|
||||
self::assertInstanceOf(Drawing::class, $image);
|
||||
self::assertTrue($image->isInCell());
|
||||
self::assertSame($path, $image->getPath());
|
||||
self::assertNotSame($objDrawing, $image);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,4 +18,7 @@ return [
|
||||
'numeric string with numeric type' => ['1887', DataType::TYPE_NUMERIC, 1887, DataType::TYPE_NUMERIC],
|
||||
'true with bool type' => [true, DataType::TYPE_BOOL, true, DataType::TYPE_BOOL],
|
||||
'false with bool type' => [false, DataType::TYPE_BOOL, false, DataType::TYPE_BOOL],
|
||||
'ISO Date' => ['1996-01-01', DataType::TYPE_ISO_DATE, 35065.0, DataType::TYPE_NUMERIC],
|
||||
'Valid Error' => ['#VALUE!', DataType::TYPE_ERROR, '#VALUE!', DataType::TYPE_ERROR],
|
||||
'Invalid Error' => ['VALUE!', DataType::TYPE_ERROR, '#NULL!', DataType::TYPE_ERROR],
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user