PhpSpreadsheet/tests/PhpSpreadsheetTests/Reader/OdsTest.php

226 lines
8.0 KiB
PHP
Raw Normal View History

2017-02-18 12:36:08 +00:00
<?php
namespace PhpOffice\PhpSpreadsheetTests\Reader;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Reader\Ods;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
2017-02-18 12:36:08 +00:00
use PhpOffice\PhpSpreadsheet\Style\Font;
use PHPUnit_Framework_TestCase;
2017-02-18 12:36:08 +00:00
/**
* @todo The class doesn't read the bold/italic/underline properties (rich text)
2017-02-18 12:36:08 +00:00
*/
class OdsTest extends PHPUnit_Framework_TestCase
2017-02-18 12:36:08 +00:00
{
/**
* @var Spreadsheet
2017-02-18 12:36:08 +00:00
*/
private $spreadsheetOOCalcTest;
/**
* @var Spreadsheet
*/
private $spreadsheetData;
2017-02-18 12:36:08 +00:00
/**
* @return Spreadsheet
2017-02-18 12:36:08 +00:00
*/
protected function loadOOCalcTestFile()
{
if (!$this->spreadsheetOOCalcTest) {
2017-02-18 12:36:08 +00:00
$filename = __DIR__ . '/../../../samples/templates/OOCalcTest.ods';
// Load into this instance
$reader = new Ods();
$this->spreadsheetOOCalcTest = $reader->loadIntoExisting($filename, new Spreadsheet());
}
return $this->spreadsheetOOCalcTest;
}
/**
* @return Spreadsheet
*/
protected function loadDataFile()
{
if (!$this->spreadsheetData) {
$filename = __DIR__ . '/../../data/Reader/Ods/data.ods';
2017-02-18 12:36:08 +00:00
// Load into this instance
$reader = new Ods();
$this->spreadsheetData = $reader->loadIntoExisting($filename, new Spreadsheet());
2017-02-18 12:36:08 +00:00
}
return $this->spreadsheetData;
2017-02-18 12:36:08 +00:00
}
public function testReadFileProperties()
{
$filename = __DIR__ . '/../../data/Reader/Ods/data.ods';
// Load into this instance
$reader = new Ods();
// Test "listWorksheetNames" method
self::assertEquals([
'Sheet1',
'Second Sheet',
], $reader->listWorksheetNames($filename));
}
2017-02-18 12:55:22 +00:00
public function testLoadWorksheets()
{
$spreadsheet = $this->loadDataFile();
2017-02-18 12:55:22 +00:00
self::assertInstanceOf('PhpOffice\PhpSpreadsheet\Spreadsheet', $spreadsheet);
2017-02-18 12:55:22 +00:00
self::assertEquals(2, $spreadsheet->getSheetCount());
2017-02-18 12:55:22 +00:00
$firstSheet = $spreadsheet->getSheet(0);
self::assertInstanceOf('PhpOffice\PhpSpreadsheet\Worksheet', $firstSheet);
2017-02-18 12:55:22 +00:00
$secondSheet = $spreadsheet->getSheet(1);
self::assertInstanceOf('PhpOffice\PhpSpreadsheet\Worksheet', $secondSheet);
2017-02-18 12:55:22 +00:00
}
public function testReadValueAndComments()
{
$spreadsheet = $this->loadOOCalcTestFile();
2017-02-18 12:36:08 +00:00
$firstSheet = $spreadsheet->getSheet(0);
self::assertEquals(29, $firstSheet->getHighestRow());
self::assertEquals('N', $firstSheet->getHighestColumn());
2017-02-18 12:36:08 +00:00
// Simple cell value
self::assertEquals('Test String 1', $firstSheet->getCell('A1')->getValue());
2017-02-18 12:36:08 +00:00
// Merged cell
self::assertEquals('BOX', $firstSheet->getCell('B18')->getValue());
2017-02-18 12:36:08 +00:00
// Comments/Annotations
self::assertEquals(
'Test for a simple colour-formatted string',
$firstSheet->getComment('A1')->getText()->getPlainText()
2017-02-18 12:36:08 +00:00
);
// Data types
self::assertEquals(DataType::TYPE_STRING, $firstSheet->getCell('A1')->getDataType());
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('B1')->getDataType()); // Int
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('B6')->getDataType()); // Float
self::assertEquals(1.23, $firstSheet->getCell('B6')->getValue());
self::assertEquals(0, $firstSheet->getCell('G10')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A10')->getDataType()); // Date
self::assertEquals(22269.0, $firstSheet->getCell('A10')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A13')->getDataType()); // Time
self::assertEquals(25569.0625, $firstSheet->getCell('A13')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A15')->getDataType()); // Date + Time
self::assertEquals(22269.0625, $firstSheet->getCell('A15')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A11')->getDataType()); // Fraction
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_BOOL, $firstSheet->getCell('D6')->getDataType());
self::assertTrue($firstSheet->getCell('D6')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_FORMULA, $firstSheet->getCell('C6')->getDataType()); // Formula
self::assertEquals('=TRUE()', $firstSheet->getCell('C6')->getValue()); // Formula
2017-02-18 12:36:08 +00:00
2017-10-01 11:07:04 +00:00
// Percentage, Currency
2017-02-18 12:36:08 +00:00
$spreadsheet = $this->loadDataFile();
2017-02-18 12:36:08 +00:00
2017-02-18 12:55:22 +00:00
$firstSheet = $spreadsheet->getSheet(0);
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A1')->getDataType()); // Percentage (10%)
self::assertEquals(0.1, $firstSheet->getCell('A1')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A2')->getDataType()); // Percentage (10.00%)
self::assertEquals(0.1, $firstSheet->getCell('A2')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A4')->getDataType()); // Currency (€10.00)
self::assertEquals(10, $firstSheet->getCell('A4')->getValue());
2017-02-18 12:36:08 +00:00
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A5')->getDataType()); // Currency ($20)
self::assertEquals(20, $firstSheet->getCell('A5')->getValue());
2017-02-18 12:36:08 +00:00
}
public function testReadColors()
{
$spreadsheet = $this->loadOOCalcTestFile();
2017-02-18 12:36:08 +00:00
$firstSheet = $spreadsheet->getSheet(0);
// Background color
$style = $firstSheet->getCell('K3')->getStyle();
2017-02-18 12:36:08 +00:00
self::assertEquals('none', $style->getFill()->getFillType());
self::assertEquals('FFFFFFFF', $style->getFill()->getStartColor()->getARGB());
self::assertEquals('FF000000', $style->getFill()->getEndColor()->getARGB());
2017-02-18 12:36:08 +00:00
}
public function testReadRichText()
{
$spreadsheet = $this->loadOOCalcTestFile();
$firstSheet = $spreadsheet->getSheet(0);
self::assertEquals(
"I don't know if OOCalc supports Rich Text in the same way as Excel, " .
'And this row should be autofit height with text wrap',
$firstSheet->getCell('A28')->getValue()
);
}
public function testReadCellsWithRepeatedSpaces()
{
$spreadsheet = $this->loadDataFile();
$firstSheet = $spreadsheet->getSheet(0);
self::assertEquals('This has 4 spaces before and 2 after ', $firstSheet->getCell('A8')->getValue());
self::assertEquals('This only one after ', $firstSheet->getCell('A9')->getValue());
self::assertEquals('Test with DIFFERENT styles and multiple spaces: ', $firstSheet->getCell('A10')->getValue());
self::assertEquals("test with new \nLines", $firstSheet->getCell('A11')->getValue());
}
public function testReadHyperlinks()
{
$spreadsheet = $this->loadOOCalcTestFile();
$firstSheet = $spreadsheet->getSheet(0);
$hyperlink = $firstSheet->getCell('A29');
self::assertEquals(DataType::TYPE_STRING, $hyperlink->getDataType());
self::assertEquals('PHPExcel', $hyperlink->getValue());
self::assertEquals('http://www.phpexcel.net/', $hyperlink->getHyperlink()->getUrl());
}
2017-10-01 11:07:04 +00:00
// Below some test for features not implemented yet
2017-02-18 12:36:08 +00:00
public function testReadBoldItalicUnderline()
{
$this->markTestIncomplete('Features not implemented yet');
2017-02-18 12:36:08 +00:00
$spreadsheet = $this->loadOOCalcTestFile();
2017-02-18 12:36:08 +00:00
$firstSheet = $spreadsheet->getSheet(0);
// Font styles
$style = $firstSheet->getCell('A1')->getStyle();
self::assertEquals('FF000000', $style->getFont()->getColor()->getARGB());
self::assertEquals(11, $style->getFont()->getSize());
self::assertEquals(Font::UNDERLINE_NONE, $style->getFont()->getUnderline());
2017-02-18 12:36:08 +00:00
$style = $firstSheet->getCell('E3')->getStyle();
self::assertEquals(Font::UNDERLINE_SINGLE, $style->getFont()->getUnderline());
2017-02-18 12:36:08 +00:00
$style = $firstSheet->getCell('E1')->getStyle();
self::assertTrue($style->getFont()->getBold());
self::assertTrue($style->getFont()->getItalic());
2017-02-18 12:36:08 +00:00
}
}