AlignmentMiddleTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Style;
  3. use PhpOffice\PhpSpreadsheet\Shared\File;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  6. use PhpOffice\PhpSpreadsheet\Writer\Html;
  7. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  8. use PHPUnit\Framework\TestCase;
  9. use ZipArchive;
  10. class AlignmentMiddleTest extends TestCase
  11. {
  12. /** @var ?Spreadsheet */
  13. private $spreadsheet;
  14. /** @var string */
  15. private $outputFileName = '';
  16. protected function tearDown(): void
  17. {
  18. if ($this->spreadsheet !== null) {
  19. $this->spreadsheet->disconnectWorksheets();
  20. $this->spreadsheet = null;
  21. }
  22. if ($this->outputFileName !== '') {
  23. unlink($this->outputFileName);
  24. $this->outputFileName = '';
  25. }
  26. }
  27. public function testCenterWriteHtml(): void
  28. {
  29. // Html Writer changes vertical align center to middle
  30. $this->spreadsheet = new Spreadsheet();
  31. $sheet = $this->spreadsheet->getActiveSheet();
  32. $sheet->getCell('A1')->setValue('Cell1');
  33. $sheet->getStyle('A1')
  34. ->getAlignment()
  35. ->setVertical(Alignment::VERTICAL_CENTER);
  36. $writer = new HTML($this->spreadsheet);
  37. $html = $writer->generateHtmlAll();
  38. self::assertStringContainsString('vertical-align:middle', $html);
  39. self::assertStringNotContainsString('vertical-align:center', $html);
  40. }
  41. public function testCenterWriteXlsx(): void
  42. {
  43. // Xlsx Writer uses vertical align center unchanged
  44. $this->spreadsheet = new Spreadsheet();
  45. $sheet = $this->spreadsheet->getActiveSheet();
  46. $sheet->getCell('A1')->setValue('Cell1');
  47. $sheet->getStyle('A1')
  48. ->getAlignment()
  49. ->setVertical(Alignment::VERTICAL_CENTER);
  50. $this->outputFileName = File::temporaryFilename();
  51. $writer = new Xlsx($this->spreadsheet);
  52. $writer->save($this->outputFileName);
  53. $zip = new ZipArchive();
  54. $zip->open($this->outputFileName);
  55. $html = $zip->getFromName('xl/styles.xml');
  56. $zip->close();
  57. self::assertStringContainsString('vertical="center"', $html);
  58. self::assertStringNotContainsString('vertical="middle"', $html);
  59. }
  60. public function testCenterWriteXlsx2(): void
  61. {
  62. // Xlsx Writer changes vertical align middle to center
  63. $this->spreadsheet = new Spreadsheet();
  64. $sheet = $this->spreadsheet->getActiveSheet();
  65. $sheet->getCell('A1')->setValue('Cell1');
  66. $sheet->getStyle('A1')
  67. ->getAlignment()
  68. ->setVertical('middle');
  69. $this->outputFileName = File::temporaryFilename();
  70. $writer = new Xlsx($this->spreadsheet);
  71. $writer->save($this->outputFileName);
  72. $zip = new ZipArchive();
  73. $zip->open($this->outputFileName);
  74. $html = $zip->getFromName('xl/styles.xml');
  75. $zip->close();
  76. self::assertStringContainsString('vertical="center"', $html);
  77. self::assertStringNotContainsString('vertical="middle"', $html);
  78. }
  79. }