2017-03-04 14:22:20 +00:00
|
|
|
<?php
|
|
|
|
|
2020-04-27 10:28:36 +00:00
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Ods;
|
2017-03-04 14:22:20 +00:00
|
|
|
|
2017-03-04 16:13:10 +00:00
|
|
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
2017-03-04 14:22:20 +00:00
|
|
|
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Shared\Date;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Style\Color;
|
2017-03-04 15:18:56 +00:00
|
|
|
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Style\Font;
|
2017-03-04 14:22:20 +00:00
|
|
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Writer\Ods;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Writer\Ods\Content;
|
2017-11-08 15:48:01 +00:00
|
|
|
use PHPUnit\Framework\TestCase;
|
2017-03-04 14:22:20 +00:00
|
|
|
|
2017-11-08 15:48:01 +00:00
|
|
|
class ContentTest extends TestCase
|
2017-03-04 14:22:20 +00:00
|
|
|
{
|
2017-03-06 05:40:27 +00:00
|
|
|
private $samplesPath = __DIR__ . '/../../../data/Writer/Ods';
|
2017-03-04 14:22:20 +00:00
|
|
|
|
2017-03-04 16:13:10 +00:00
|
|
|
/**
|
|
|
|
* @var string
|
|
|
|
*/
|
2017-03-06 05:40:27 +00:00
|
|
|
private $compatibilityMode;
|
2017-03-04 16:13:10 +00:00
|
|
|
|
2020-04-27 10:28:36 +00:00
|
|
|
protected function setUp(): void
|
2017-03-04 16:13:10 +00:00
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
|
|
|
|
$this->compatibilityMode = Functions::getCompatibilityMode();
|
|
|
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_OPENOFFICE);
|
|
|
|
}
|
|
|
|
|
2020-04-27 10:28:36 +00:00
|
|
|
protected function tearDown(): void
|
2017-03-04 16:13:10 +00:00
|
|
|
{
|
|
|
|
parent::tearDown();
|
|
|
|
Functions::setCompatibilityMode($this->compatibilityMode);
|
|
|
|
}
|
|
|
|
|
2017-03-04 14:22:20 +00:00
|
|
|
public function testWriteEmptySpreadsheet()
|
|
|
|
{
|
2017-04-16 05:13:16 +00:00
|
|
|
$content = new Content(new Ods(new Spreadsheet()));
|
2017-03-04 14:22:20 +00:00
|
|
|
$xml = $content->write();
|
|
|
|
|
2017-09-20 05:55:42 +00:00
|
|
|
self::assertXmlStringEqualsXmlFile($this->samplesPath . '/content-empty.xml', $xml);
|
2017-03-04 14:22:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testWriteSpreadsheet()
|
|
|
|
{
|
|
|
|
$workbook = new Spreadsheet();
|
|
|
|
|
|
|
|
// Worksheet 1
|
|
|
|
$worksheet1 = $workbook->getActiveSheet();
|
|
|
|
$worksheet1->setCellValue('A1', 1); // Number
|
|
|
|
$worksheet1->setCellValue('B1', 12345.6789); // Number
|
2017-03-04 15:35:53 +00:00
|
|
|
$worksheet1->setCellValue('C1', '1'); // Number without cast
|
|
|
|
$worksheet1->setCellValueExplicit('D1', '01234', DataType::TYPE_STRING); // Number casted to string
|
|
|
|
$worksheet1->setCellValue('E1', 'Lorem ipsum'); // String
|
2017-03-04 14:22:20 +00:00
|
|
|
|
|
|
|
$worksheet1->setCellValue('A2', true); // Boolean
|
|
|
|
$worksheet1->setCellValue('B2', false); // Boolean
|
2017-03-04 16:13:10 +00:00
|
|
|
$worksheet1->setCellValueExplicit(
|
|
|
|
'C2',
|
|
|
|
'=IF(A3, CONCATENATE(A1, " ", A2), CONCATENATE(A2, " ", A1))',
|
|
|
|
DataType::TYPE_FORMULA
|
|
|
|
); // Formula
|
2017-03-04 14:22:20 +00:00
|
|
|
|
|
|
|
$worksheet1->setCellValue('D2', Date::PHPToExcel(1488635026)); // Date
|
|
|
|
$worksheet1->getStyle('D2')
|
|
|
|
->getNumberFormat()
|
|
|
|
->setFormatCode(NumberFormat::FORMAT_DATE_DATETIME);
|
|
|
|
|
2017-03-04 15:18:56 +00:00
|
|
|
// Styles
|
|
|
|
$worksheet1->getStyle('A1')->getFont()->setBold(true);
|
|
|
|
$worksheet1->getStyle('B1')->getFont()->setItalic(true);
|
2017-03-04 15:35:53 +00:00
|
|
|
$worksheet1->getStyle('C1')->getFont()->setName('Courier');
|
2017-03-04 15:18:56 +00:00
|
|
|
$worksheet1->getStyle('C1')->getFont()->setSize(14);
|
|
|
|
$worksheet1->getStyle('C1')->getFont()->setColor(new Color(Color::COLOR_BLUE));
|
|
|
|
|
|
|
|
$worksheet1->getStyle('C1')->getFill()->setFillType(Fill::FILL_SOLID);
|
|
|
|
$worksheet1->getStyle('C1')->getFill()->setStartColor(new Color(Color::COLOR_RED));
|
|
|
|
|
|
|
|
$worksheet1->getStyle('C1')->getFont()->setUnderline(Font::UNDERLINE_SINGLE);
|
|
|
|
$worksheet1->getStyle('C2')->getFont()->setUnderline(Font::UNDERLINE_DOUBLE);
|
|
|
|
$worksheet1->getStyle('D2')->getFont()->setUnderline(Font::UNDERLINE_NONE);
|
|
|
|
|
2017-03-04 14:22:20 +00:00
|
|
|
// Worksheet 2
|
|
|
|
$worksheet2 = $workbook->createSheet();
|
|
|
|
$worksheet2->setTitle('New Worksheet');
|
|
|
|
$worksheet2->setCellValue('A1', 2);
|
|
|
|
|
|
|
|
// Write
|
2017-04-16 05:13:16 +00:00
|
|
|
$content = new Content(new Ods($workbook));
|
2017-03-04 14:22:20 +00:00
|
|
|
$xml = $content->write();
|
|
|
|
|
2017-09-20 05:55:42 +00:00
|
|
|
self::assertXmlStringEqualsXmlFile($this->samplesPath . '/content-with-data.xml', $xml);
|
2017-03-04 14:22:20 +00:00
|
|
|
}
|
|
|
|
}
|