<?php namespace PhpOffice\PhpSpreadsheetTests\Writer\Ods; use PhpOffice\PhpSpreadsheet\Calculation\Functions; use PhpOffice\PhpSpreadsheet\Cell\DataType; use PhpOffice\PhpSpreadsheet\Shared\Date; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\Color; use PhpOffice\PhpSpreadsheet\Style\Fill; use PhpOffice\PhpSpreadsheet\Style\Font; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use PhpOffice\PhpSpreadsheet\Writer\Ods; use PhpOffice\PhpSpreadsheet\Writer\Ods\Content; use PHPUnit\Framework\TestCase; class ContentTest extends TestCase { private $samplesPath = 'tests/data/Writer/Ods'; /** * @var string */ private $compatibilityMode; protected function setUp(): void { parent::setUp(); $this->compatibilityMode = Functions::getCompatibilityMode(); Functions::setCompatibilityMode(Functions::COMPATIBILITY_OPENOFFICE); } protected function tearDown(): void { parent::tearDown(); Functions::setCompatibilityMode($this->compatibilityMode); } public function testWriteEmptySpreadsheet(): void { $content = new Content(new Ods(new Spreadsheet())); $xml = $content->write(); self::assertXmlStringEqualsXmlFile($this->samplesPath . '/content-empty.xml', $xml); } public function testWriteSpreadsheet(): void { $workbook = new Spreadsheet(); // Worksheet 1 $worksheet1 = $workbook->getActiveSheet(); $worksheet1->setCellValue('A1', 1); // Number $worksheet1->setCellValue('B1', 12345.6789); // Number $worksheet1->setCellValue('C1', '1'); // Number without cast $worksheet1->setCellValueExplicit('D1', '01234', DataType::TYPE_STRING); // Number casted to string $worksheet1->setCellValue('E1', 'Lorem ipsum'); // String $worksheet1->setCellValue('A2', true); // Boolean $worksheet1->setCellValue('B2', false); // Boolean $worksheet1->setCellValueExplicit( 'C2', '=IF(A3, CONCATENATE(A1, " ", A2), CONCATENATE(A2, " ", A1))', DataType::TYPE_FORMULA ); // Formula $worksheet1->setCellValue('D2', Date::PHPToExcel(1488635026)); // Date $worksheet1->getStyle('D2') ->getNumberFormat() ->setFormatCode(NumberFormat::FORMAT_DATE_DATETIME); // Styles $worksheet1->getStyle('A1')->getFont()->setBold(true); $worksheet1->getStyle('B1')->getFont()->setItalic(true); $worksheet1->getStyle('C1')->getFont()->setName('Courier'); $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); // Worksheet 2 $worksheet2 = $workbook->createSheet(); $worksheet2->setTitle('New Worksheet'); $worksheet2->setCellValue('A1', 2); // Write $content = new Content(new Ods($workbook)); $xml = $content->write(); self::assertXmlStringEqualsXmlFile($this->samplesPath . '/content-with-data.xml', $xml); } }