CharNonPrintableTest.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  5. class CharNonPrintableTest extends AbstractFunctional
  6. {
  7. /**
  8. * @dataProvider providerType
  9. */
  10. public function testNotPrintable(string $type): void
  11. {
  12. $spreadsheet = new Spreadsheet();
  13. $sheet = $spreadsheet->getActiveSheet();
  14. $sheet->getCell('B1')->setValue('=CHAR(2)');
  15. $sheet->getCell('C1')->setValue('=CHAR(127)');
  16. $hello = "hello\nthere";
  17. $sheet->getCell('D2')->setValue($hello);
  18. $sheet->getCell('D1')->setValue('=D2');
  19. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $type);
  20. $result = $reloadedSpreadsheet->getActiveSheet()->getCell('B1')->getCalculatedValue();
  21. self::assertEquals("\x02", $result);
  22. $result = $reloadedSpreadsheet->getActiveSheet()->getCell('C1')->getCalculatedValue();
  23. self::assertEquals("\x7f", $result);
  24. $result = $reloadedSpreadsheet->getActiveSheet()->getCell('D1')->getCalculatedValue();
  25. self::assertEquals($hello, $result);
  26. $spreadsheet->disconnectWorksheets();
  27. $reloadedSpreadsheet->disconnectWorksheets();
  28. }
  29. public function providerType(): array
  30. {
  31. return [
  32. ['Xlsx'],
  33. ['Xls'],
  34. //['Ods'], // no support yet in Reader or Writer
  35. // without csv suffix, Reader/Csv decides type via mime_get_type,
  36. // and control character makes it guess application/octet-stream,
  37. // so Reader/Csv decides it can't read it.
  38. //['Csv'],
  39. // DOMDocument.loadHTML() rejects '&#2;' even though legal html.
  40. //['Html'],
  41. ];
  42. }
  43. }