mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-04 06:33:33 +00:00
98f464b41f
Fix #1104, which went stale over 6 years ago, and is now reopened. This PR addresses the alignment of the table, not alignment of text. Support is added for the following: - Html. Full support. - Mpdf. Full support, except that, when mixed LTR and RTL worksheets are output, all tables will be on the left of the page (but will be properly aligned). - Tcpdf. Full support when all worksheets being output are RTL; no support when mixed LTR and RTL worksheets are output. - Dompdf. No support.
87 lines
2.8 KiB
PHP
87 lines
2.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Html;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class DirectionTest extends TestCase
|
|
{
|
|
public function testMixedRtlAndLtr(): void
|
|
{
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet1 = $spreadsheet->getActiveSheet();
|
|
$sheet1->setRightToLeft(true);
|
|
$sheet2 = $spreadsheet->createSheet();
|
|
$sheet3 = $spreadsheet->createSheet();
|
|
$sheet3->setRightToLeft(true);
|
|
$cells = [
|
|
['a1', 'b1', 'c1'],
|
|
['a2', 'b2', 'c2'],
|
|
];
|
|
$sheet1->fromArray($cells);
|
|
$sheet2->fromArray($cells);
|
|
$sheet3->fromArray($cells);
|
|
$writer = new Html($spreadsheet);
|
|
$writer->writeAllSheets();
|
|
$html = $writer->generateHTMLall();
|
|
$rtlCount = substr_count($html, "dir='rtl'");
|
|
self::assertSame(2, $rtlCount);
|
|
$ltrCount = substr_count($html, "dir='ltr'");
|
|
self::assertSame(1, $ltrCount);
|
|
$spreadsheet->disconnectWorksheets();
|
|
}
|
|
|
|
public function testNoRtl(): void
|
|
{
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet1 = $spreadsheet->getActiveSheet();
|
|
$sheet2 = $spreadsheet->createSheet();
|
|
$sheet3 = $spreadsheet->createSheet();
|
|
$cells = [
|
|
['a1', 'b1', 'c1'],
|
|
['a2', 'b2', 'c2'],
|
|
];
|
|
$sheet1->fromArray($cells);
|
|
$sheet2->fromArray($cells);
|
|
$sheet3->fromArray($cells);
|
|
$writer = new Html($spreadsheet);
|
|
$writer->writeAllSheets();
|
|
$html = $writer->generateHTMLall();
|
|
$rtlCount = substr_count($html, "dir='rtl'");
|
|
self::assertSame(0, $rtlCount);
|
|
$ltrCount = substr_count($html, "dir='ltr'");
|
|
self::assertSame(0, $ltrCount);
|
|
$spreadsheet->disconnectWorksheets();
|
|
}
|
|
|
|
public function testOnlyRtl(): void
|
|
{
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet1 = $spreadsheet->getActiveSheet();
|
|
$sheet2 = $spreadsheet->createSheet();
|
|
$sheet3 = $spreadsheet->createSheet();
|
|
$cells = [
|
|
['a1', 'b1', 'c1'],
|
|
['a2', 'b2', 'c2'],
|
|
];
|
|
$sheet1->fromArray($cells);
|
|
$sheet1->setRightToLeft(true);
|
|
$sheet2->fromArray($cells);
|
|
$sheet2->setRightToLeft(true);
|
|
$sheet3->fromArray($cells);
|
|
$sheet3->setRightToLeft(true);
|
|
$writer = new Html($spreadsheet);
|
|
$writer->writeAllSheets();
|
|
$html = $writer->generateHTMLall();
|
|
$rtlCount = substr_count($html, "dir='rtl'");
|
|
self::assertSame(4, $rtlCount, '3 sheets plus html tag');
|
|
$ltrCount = substr_count($html, "dir='ltr'");
|
|
self::assertSame(0, $ltrCount);
|
|
$spreadsheet->disconnectWorksheets();
|
|
}
|
|
}
|