mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-08-17 17:21:36 +00:00
Merge branch 'master' into issue3951
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class NumberFormatSystemDateTimeTest extends TestCase
|
||||
{
|
||||
private string $shortDateFormat;
|
||||
|
||||
private string $longDateFormat;
|
||||
|
||||
private string $dateTimeFormat;
|
||||
|
||||
private string $timeFormat;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->shortDateFormat = NumberFormat::getShortDateFormat();
|
||||
$this->longDateFormat = NumberFormat::getLongDateFormat();
|
||||
$this->dateTimeFormat = NumberFormat::getDateTimeFormat();
|
||||
$this->timeFormat = NumberFormat::getTimeFormat();
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
NumberFormat::setShortDateFormat($this->shortDateFormat);
|
||||
NumberFormat::setLongDateFormat($this->longDateFormat);
|
||||
NumberFormat::setDateTimeFormat($this->dateTimeFormat);
|
||||
NumberFormat::setTimeFormat($this->timeFormat);
|
||||
}
|
||||
|
||||
public function testOverrides(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$formula = '=DATEVALUE("2024-02-29")+TIMEVALUE("8:12:15 AM")';
|
||||
$sheet->getCell('A1')->setValue($formula);
|
||||
$sheet->getCell('A2')->setValue($formula);
|
||||
$sheet->getStyle('A2')->getNumberFormat()
|
||||
->setBuiltinFormatCode(14);
|
||||
$sheet->getCell('A3')->setValue($formula);
|
||||
$sheet->getStyle('A3')->getNumberFormat()
|
||||
->setBuiltinFormatCode(15);
|
||||
$sheet->getCell('A4')->setValue($formula);
|
||||
$sheet->getStyle('A4')->getNumberFormat()
|
||||
->setBuiltinFormatCode(22);
|
||||
$sheet->getCell('A5')->setValue($formula);
|
||||
$sheet->getStyle('A5')->getNumberFormat()
|
||||
->setFormatCode('[$-F800]');
|
||||
$sheet->getCell('A6')->setValue($formula);
|
||||
$sheet->getStyle('A6')->getNumberFormat()
|
||||
->setFormatCode('[$-F400]');
|
||||
$sheet->getCell('A7')->setValue($formula);
|
||||
$sheet->getStyle('A7')->getNumberFormat()
|
||||
->setFormatCode('[$-x-sysdate]');
|
||||
$sheet->getCell('A8')->setValue($formula);
|
||||
$sheet->getStyle('A8')->getNumberFormat()
|
||||
->setFormatCode('[$-x-systime]');
|
||||
$sheet->getCell('A9')->setValue($formula);
|
||||
$sheet->getStyle('A9')->getNumberFormat()
|
||||
->setFormatCode('hello' . NumberFormat::FORMAT_SYSDATE_F800 . 'goodbye');
|
||||
NumberFormat::setShortDateFormat('yyyy/mm/dd');
|
||||
NumberFormat::setDateTimeFormat('yyyy/mm/dd hh:mm AM/PM');
|
||||
NumberFormat::setLongDateFormat('dddd d mmm yyyy');
|
||||
NumberFormat::setTimeFormat('h:mm');
|
||||
self::assertSame('2024/02/29', $sheet->getCell('A2')->getformattedValue());
|
||||
self::assertSame('2024/02/29 08:12 AM', $sheet->getCell('A4')->getformattedValue());
|
||||
self::assertSame('Thursday 29 Feb 2024', $sheet->getCell('A5')->getformattedValue());
|
||||
self::assertSame('8:12', $sheet->getCell('A6')->getformattedValue());
|
||||
self::assertSame('Thursday 29 Feb 2024', $sheet->getCell('A7')->getformattedValue());
|
||||
self::assertSame('8:12', $sheet->getCell('A8')->getformattedValue());
|
||||
self::assertSame('Thursday 29 Feb 2024', $sheet->getCell('A9')->getformattedValue());
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
|
||||
public function testDefaults(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$formula = '=DATEVALUE("2024-02-29")+TIMEVALUE("8:12:15 AM")';
|
||||
$sheet->getCell('A1')->setValue($formula);
|
||||
$sheet->getCell('A2')->setValue($formula);
|
||||
$sheet->getStyle('A2')->getNumberFormat()
|
||||
->setBuiltinFormatCode(14);
|
||||
$sheet->getCell('A3')->setValue($formula);
|
||||
$sheet->getStyle('A3')->getNumberFormat()
|
||||
->setBuiltinFormatCode(15);
|
||||
$sheet->getCell('A4')->setValue($formula);
|
||||
$sheet->getStyle('A4')->getNumberFormat()
|
||||
->setBuiltinFormatCode(22);
|
||||
$sheet->getCell('A5')->setValue($formula);
|
||||
$sheet->getStyle('A5')->getNumberFormat()
|
||||
->setFormatCode('[$-F800]');
|
||||
$sheet->getCell('A6')->setValue($formula);
|
||||
$sheet->getStyle('A6')->getNumberFormat()
|
||||
->setFormatCode('[$-F400]');
|
||||
$sheet->getCell('A7')->setValue($formula);
|
||||
$sheet->getStyle('A7')->getNumberFormat()
|
||||
->setFormatCode('[$-x-sysdate]');
|
||||
$sheet->getCell('A8')->setValue($formula);
|
||||
$sheet->getStyle('A8')->getNumberFormat()
|
||||
->setFormatCode('[$-x-systime]');
|
||||
$sheet->getCell('A9')->setValue($formula);
|
||||
$sheet->getStyle('A9')->getNumberFormat()
|
||||
->setFormatCode('hello' . NumberFormat::FORMAT_SYSDATE_F800 . 'goodbye');
|
||||
self::assertSame('2/29/2024', $sheet->getCell('A2')->getformattedValue());
|
||||
self::assertSame('2/29/2024 8:12', $sheet->getCell('A4')->getformattedValue());
|
||||
self::assertSame('Thursday, February 29, 2024', $sheet->getCell('A5')->getformattedValue());
|
||||
self::assertSame('8:12:15 AM', $sheet->getCell('A6')->getformattedValue());
|
||||
self::assertSame('Thursday, February 29, 2024', $sheet->getCell('A7')->getformattedValue());
|
||||
self::assertSame('8:12:15 AM', $sheet->getCell('A8')->getformattedValue());
|
||||
self::assertSame('Thursday, February 29, 2024', $sheet->getCell('A9')->getformattedValue());
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
}
|
||||
@@ -252,6 +252,27 @@ class WorksheetTest extends TestCase
|
||||
],
|
||||
'A',
|
||||
],
|
||||
'Data includes nulls' => [
|
||||
[
|
||||
['A1', 'B1', 'C1', 'D1', 'E1'],
|
||||
[null, 'B2', 'C2', 'D2', 'E2'],
|
||||
['A3', null, 'C3', 'D3', 'E3'],
|
||||
['A4', 'B4', null, 'D4', 'E4'],
|
||||
['A5', 'B5', 'C5', null, 'E5'],
|
||||
['A6', 'B6', 'C6', 'D6', null],
|
||||
],
|
||||
'B',
|
||||
2,
|
||||
[
|
||||
['A1', 'D1', 'E1'],
|
||||
[null, 'D2', 'E2'],
|
||||
['A3', 'D3', 'E3'],
|
||||
['A4', 'D4', 'E4'],
|
||||
['A5', null, 'E5'],
|
||||
['A6', 'D6', null],
|
||||
],
|
||||
'C',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -384,6 +405,25 @@ class WorksheetTest extends TestCase
|
||||
],
|
||||
4,
|
||||
],
|
||||
'Data includes nulls' => [
|
||||
[
|
||||
['A1', 'B1', 'C1', 'D1', 'E1'],
|
||||
[null, 'B2', 'C2', 'D2', 'E2'],
|
||||
['A3', null, 'C3', 'D3', 'E3'],
|
||||
['A4', 'B4', null, 'D4', 'E4'],
|
||||
['A5', 'B5', 'C5', null, 'E5'],
|
||||
['A6', 'B6', 'C6', 'D6', null],
|
||||
],
|
||||
1,
|
||||
2,
|
||||
[
|
||||
['A3', null, 'C3', 'D3', 'E3'],
|
||||
['A4', 'B4', null, 'D4', 'E4'],
|
||||
['A5', 'B5', 'C5', null, 'E5'],
|
||||
['A6', 'B6', 'C6', 'D6', null],
|
||||
],
|
||||
4,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Writer\Dompdf;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Dompdf;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class HideTest extends TestCase
|
||||
{
|
||||
public function testHide(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->fromArray([
|
||||
['a1', 'b1', 'c1', 'd1', 'e1', 'f1'],
|
||||
['a2', 'b2', 'c2', 'd2', 'e2', 'f2'],
|
||||
['a3', 'b3', 'c3', 'd3', 'e3', 'f3'],
|
||||
['a4', 'b4', 'c4', 'd4', 'e4', 'f4'],
|
||||
['a5', 'b5', 'c5', 'd5', 'e5', 'f5'],
|
||||
['a6', 'b6', 'c6', 'd6', 'e6', 'f6'],
|
||||
]);
|
||||
$sheet->getColumnDimension('B')->setVisible(false);
|
||||
$sheet->getRowDimension(3)->setVisible(false);
|
||||
$writer = new Dompdf($spreadsheet);
|
||||
$html = $writer->generateHtmlAll();
|
||||
self::assertStringContainsString('table.sheet0 .column1 { display:none }', $html);
|
||||
self::assertStringContainsString('table.sheet0 tr.row2 { display:none; visibility:hidden }', $html);
|
||||
self::assertStringContainsString('.navigation {display: none;}', $html);
|
||||
$count = substr_count($html, 'display:none');
|
||||
self::assertSame(3, $count);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Html;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class HideTest extends TestCase
|
||||
{
|
||||
public function testHide(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->fromArray([
|
||||
['a1', 'b1', 'c1', 'd1', 'e1', 'f1'],
|
||||
['a2', 'b2', 'c2', 'd2', 'e2', 'f2'],
|
||||
['a3', 'b3', 'c3', 'd3', 'e3', 'f3'],
|
||||
['a4', 'b4', 'c4', 'd4', 'e4', 'f4'],
|
||||
['a5', 'b5', 'c5', 'd5', 'e5', 'f5'],
|
||||
['a6', 'b6', 'c6', 'd6', 'e6', 'f6'],
|
||||
]);
|
||||
$sheet->getColumnDimension('B')->setVisible(false);
|
||||
$sheet->getRowDimension(3)->setVisible(false);
|
||||
$writer = new Html($spreadsheet);
|
||||
$html = $writer->generateHtmlAll();
|
||||
self::assertStringContainsString('table.sheet0 .column1 { display:none }', $html);
|
||||
self::assertStringContainsString('table.sheet0 tr.row2 { display:none; visibility:hidden }', $html);
|
||||
self::assertStringContainsString('.navigation {display: none;}', $html);
|
||||
$count = substr_count($html, 'display:none');
|
||||
self::assertSame(3, $count);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Writer\Mpdf;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class HideTest extends TestCase
|
||||
{
|
||||
public function testHide(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->fromArray([
|
||||
['a1', 'b1', 'c1', 'd1', 'e1', 'f1'],
|
||||
['a2', 'b2', 'c2', 'd2', 'e2', 'f2'],
|
||||
['a3', 'b3', 'c3', 'd3', 'e3', 'f3'],
|
||||
['a4', 'b4', 'c4', 'd4', 'e4', 'f4'],
|
||||
['a5', 'b5', 'c5', 'd5', 'e5', 'f5'],
|
||||
['a6', 'b6', 'c6', 'd6', 'e6', 'f6'],
|
||||
]);
|
||||
$sheet->getColumnDimension('B')->setVisible(false);
|
||||
$sheet->getRowDimension(3)->setVisible(false);
|
||||
$writer = new Mpdf($spreadsheet);
|
||||
$html = $writer->generateHtmlAll();
|
||||
self::assertStringNotContainsString('a3', $html);
|
||||
self::assertStringNotContainsString('b1', $html);
|
||||
self::assertStringContainsString('a1', $html);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Writer\Tcpdf;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Tcpdf;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class HideTest extends TestCase
|
||||
{
|
||||
public function testHide(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->fromArray([
|
||||
['a1', 'b1', 'c1', 'd1', 'e1', 'f1'],
|
||||
['a2', 'b2', 'c2', 'd2', 'e2', 'f2'],
|
||||
['a3', 'b3', 'c3', 'd3', 'e3', 'f3'],
|
||||
['a4', 'b4', 'c4', 'd4', 'e4', 'f4'],
|
||||
['a5', 'b5', 'c5', 'd5', 'e5', 'f5'],
|
||||
['a6', 'b6', 'c6', 'd6', 'e6', 'f6'],
|
||||
]);
|
||||
$sheet->getColumnDimension('B')->setVisible(false);
|
||||
$sheet->getRowDimension(3)->setVisible(false);
|
||||
$writer = new Tcpdf($spreadsheet);
|
||||
$html = $writer->generateHtmlAll();
|
||||
self::assertStringNotContainsString('a3', $html);
|
||||
self::assertStringNotContainsString('b1', $html);
|
||||
self::assertStringContainsString('a1', $html);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
}
|
||||
}
|
||||
@@ -81,4 +81,5 @@ return [
|
||||
'no arguments' => ['exception'],
|
||||
'one argument' => ['exception', 1.75],
|
||||
'boolean in lieu of string' => ['TRUE', true, '@'],
|
||||
'system long date format' => ['Sunday, January 1, 2012', '1-Jan-2012', '[$-x-sysdate]'],
|
||||
];
|
||||
|
||||
@@ -160,4 +160,10 @@ return [
|
||||
false,
|
||||
'\D-00000',
|
||||
],
|
||||
[true, '[$-F800]'],
|
||||
[true, 'hello[$-F400]goodbye'],
|
||||
[false, '[$-F401]'],
|
||||
[true, '[$-x-sysdate]'],
|
||||
[true, '[$-x-systime]'],
|
||||
[false, '[$-x-systim]'],
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user