ExtendForChartsAndImagesTest.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
  5. use PhpOffice\PhpSpreadsheet\Writer\Html;
  6. use PhpOffice\PhpSpreadsheetTests\Functional;
  7. class ExtendForChartsAndImagesTest extends Functional\AbstractFunctional
  8. {
  9. public function testEmptySheet(): void
  10. {
  11. $spreadsheet = new Spreadsheet();
  12. $this->assertMaxColumnAndMaxRow($spreadsheet, 1, 1);
  13. }
  14. public function testSimpleSheet(): void
  15. {
  16. $spreadsheet = new Spreadsheet();
  17. $sheet = $spreadsheet->getActiveSheet();
  18. $sheet->setCellValue('B3', 'foo');
  19. $this->assertMaxColumnAndMaxRow($spreadsheet, 2, 3);
  20. }
  21. public function testSheetWithExtraColumnDimensions(): void
  22. {
  23. $spreadsheet = new Spreadsheet();
  24. $sheet = $spreadsheet->getActiveSheet();
  25. $sheet->setCellValue('B3', 'foo');
  26. // Artificially expend the sheet column count without any real cells
  27. $sheet->getColumnDimension('E');
  28. $this->assertMaxColumnAndMaxRow($spreadsheet, 2, 3);
  29. }
  30. public function testSheetWithExtraRowDimensions(): void
  31. {
  32. $spreadsheet = new Spreadsheet();
  33. $sheet = $spreadsheet->getActiveSheet();
  34. $sheet->setCellValue('B3', 'foo');
  35. // Artificially expend the sheet row count without any real cells
  36. $sheet->getRowDimension(5);
  37. $this->assertMaxColumnAndMaxRow($spreadsheet, 2, 3);
  38. }
  39. public function testSheetWithImageBelowData(): void
  40. {
  41. $spreadsheet = new Spreadsheet();
  42. $sheet = $spreadsheet->getActiveSheet();
  43. $sheet->setCellValue('B3', 'foo');
  44. // Add a drawing to the worksheet
  45. $drawing = new Drawing();
  46. $drawing->setPath('foo.png', false);
  47. $drawing->setCoordinates('A5');
  48. $drawing->setWorksheet($sheet);
  49. $this->assertMaxColumnAndMaxRow($spreadsheet, 2, 5);
  50. }
  51. public function testSheetWithImageRightOfData(): void
  52. {
  53. $spreadsheet = new Spreadsheet();
  54. $sheet = $spreadsheet->getActiveSheet();
  55. $sheet->setCellValue('B3', 'foo');
  56. // Add a drawing to the worksheet
  57. $drawing = new Drawing();
  58. $drawing->setPath('foo.png', false);
  59. $drawing->setCoordinates('E1');
  60. $drawing->setWorksheet($sheet);
  61. $this->assertMaxColumnAndMaxRow($spreadsheet, 5, 3);
  62. }
  63. private function assertMaxColumnAndMaxRow(Spreadsheet $spreadsheet, int $expectedColumnCount, int $expectedRowCount): void
  64. {
  65. $writer = new Html($spreadsheet);
  66. $html = $writer->generateHtmlAll();
  67. $rowCount = substr_count($html, '<tr ');
  68. self::assertSame($expectedRowCount, $rowCount);
  69. $columnCount = substr_count($html, '<td ') / $rowCount;
  70. self::assertSame($expectedColumnCount, $columnCount);
  71. }
  72. }