Reorganize Samples

The samples have become unwieldy when running them from a browser. In particular, the drop-down lists are fixed size with no scrolling, and many of them are now just too large. I have moved all the Calculation samples up a level, and broken several categories (Basic, Chart, DateTime, Engineering, Financial, and Reader) into several pieces.

Convert-Online (now found in the Engineering category) had a number of different problems which are now resolved. It is the only member with any significant code change.
This commit is contained in:
oleibman
2024-02-03 07:25:29 -08:00
parent 22f4d6ee17
commit b3de003aa5
226 changed files with 33 additions and 30 deletions
+43
View File
@@ -0,0 +1,43 @@
<?php
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Shared\Date;
require __DIR__ . '/../Header.php';
$helper->log('Load from Xls template');
$reader = IOFactory::createReader('Xls');
$spreadsheet = $reader->load(__DIR__ . '/../templates/30template.xls');
$helper->log('Add new data to the template');
$data = [['title' => 'Excel for dummies',
'price' => 17.99,
'quantity' => 2,
],
['title' => 'PHP for dummies',
'price' => 15.99,
'quantity' => 1,
],
['title' => 'Inside OOP',
'price' => 12.95,
'quantity' => 1,
],
];
$spreadsheet->getActiveSheet()->setCellValue('D1', Date::PHPToExcel(time()));
$baseRow = 5;
foreach ($data as $r => $dataRow) {
$row = $baseRow + $r;
$spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
$spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
->setCellValue('B' . $row, $dataRow['title'])
->setCellValue('C' . $row, $dataRow['price'])
->setCellValue('D' . $row, $dataRow['quantity'])
->setCellValue('E' . $row, '=C' . $row . '*D' . $row);
}
$spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
// Save
$helper->write($spreadsheet, __FILE__);
+43
View File
@@ -0,0 +1,43 @@
<?php
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Shared\Date;
require __DIR__ . '/../Header.php';
$helper->log('Load from Xls template');
$reader = IOFactory::createReader('Xls');
$spreadsheet = $reader->load(__DIR__ . '/../templates/30templatebiff5.xls');
$helper->log('Add new data to the template');
$data = [['title' => 'Excel for dummies',
'price' => 17.99,
'quantity' => 2,
],
['title' => 'PHP for dummies',
'price' => 15.99,
'quantity' => 1,
],
['title' => 'Inside OOP',
'price' => 12.95,
'quantity' => 1,
],
];
$spreadsheet->getActiveSheet()->setCellValue('D1', Date::PHPToExcel(time()));
$baseRow = 5;
foreach ($data as $r => $dataRow) {
$row = $baseRow + $r;
$spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
$spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
->setCellValue('B' . $row, $dataRow['title'])
->setCellValue('C' . $row, $dataRow['price'])
->setCellValue('D' . $row, $dataRow['quantity'])
->setCellValue('E' . $row, '=C' . $row . '*D' . $row);
}
$spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
// Save
$helper->write($spreadsheet, __FILE__);
@@ -0,0 +1,68 @@
<?php
use PhpOffice\PhpSpreadsheet\Document\Properties;
use PhpOffice\PhpSpreadsheet\IOFactory;
require __DIR__ . '/../Header.php';
$inputFileType = 'Xlsx';
$inputFileName = __DIR__ . '/../templates/31docproperties.xlsx';
$spreadsheetReader = IOFactory::createReader($inputFileType);
$callStartTime = microtime(true);
$spreadsheet = $spreadsheetReader->load($inputFileName);
$helper->logRead($inputFileType, $inputFileName, $callStartTime);
$helper->log('Adjust properties');
$spreadsheet->getProperties()->setTitle('Office 2007 XLSX Test Document')
->setSubject('Office 2007 XLSX Test Document')
->setDescription('Test XLSX document, generated using PhpSpreadsheet')
->setKeywords('office 2007 openxml php');
// Save Excel 2007 file
$filename = $helper->getFilename(__FILE__);
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$callStartTime = microtime(true);
$writer->save($filename);
$helper->logWrite($writer, $filename, $callStartTime);
$helper->logEndingNotes();
// Reread File
$helper->log('Reread Xlsx file');
$spreadsheetRead = IOFactory::load($filename);
// Set properties
$helper->log('Get properties');
$helper->log('Core Properties:');
$helper->log(' Created by - ' . $spreadsheet->getProperties()->getCreator());
$helper->log(' Created on - ' . date('d-M-Y' . $spreadsheet->getProperties()->getCreated()) . ' at ' . date('H:i:s' . $spreadsheet->getProperties()->getCreated()));
$helper->log(' Last Modified by - ' . $spreadsheet->getProperties()->getLastModifiedBy());
$helper->log(' Last Modified on - ' . date('d-M-Y' . $spreadsheet->getProperties()->getModified()) . ' at ' . date('H:i:s' . $spreadsheet->getProperties()->getModified()));
$helper->log(' Title - ' . $spreadsheet->getProperties()->getTitle());
$helper->log(' Subject - ' . $spreadsheet->getProperties()->getSubject());
$helper->log(' Description - ' . $spreadsheet->getProperties()->getDescription());
$helper->log(' Keywords: - ' . $spreadsheet->getProperties()->getKeywords());
$helper->log('Extended (Application) Properties:');
$helper->log(' Category - ' . $spreadsheet->getProperties()->getCategory());
$helper->log(' Company - ' . $spreadsheet->getProperties()->getCompany());
$helper->log(' Manager - ' . $spreadsheet->getProperties()->getManager());
$helper->log('Custom Properties:');
$customProperties = $spreadsheet->getProperties()->getCustomProperties();
foreach ($customProperties as $customProperty) {
$propertyValue = $spreadsheet->getProperties()->getCustomPropertyValue($customProperty);
$propertyType = $spreadsheet->getProperties()->getCustomPropertyType($customProperty);
if ($propertyType == Properties::PROPERTY_TYPE_DATE) {
$formattedValue = is_numeric($propertyValue) ? date('d-M-Y H:i:s', (int) $propertyValue) : '*****INVALID*****';
} elseif ($propertyType == Properties::PROPERTY_TYPE_BOOLEAN) {
$formattedValue = $propertyValue ? 'TRUE' : 'FALSE';
} else {
$formattedValue = $propertyValue;
}
$helper->log(' ' . $customProperty . ' - (' . $propertyType . ') - ' . $formattedValue);
}
$helper->logEndingNotes();
@@ -0,0 +1,68 @@
<?php
use PhpOffice\PhpSpreadsheet\Document\Properties;
use PhpOffice\PhpSpreadsheet\IOFactory;
require __DIR__ . '/../Header.php';
$inputFileType = 'Xls';
$inputFileName = __DIR__ . '/../templates/31docproperties.xls';
$spreadsheetReader = IOFactory::createReader($inputFileType);
$callStartTime = microtime(true);
$spreadsheet = $spreadsheetReader->load($inputFileName);
$helper->logRead($inputFileType, $inputFileName, $callStartTime);
$helper->log('Adjust properties');
$spreadsheet->getProperties()->setTitle('Office 95 XLS Test Document')
->setSubject('Office 95 XLS Test Document')
->setDescription('Test XLS document, generated using PhpSpreadsheet')
->setKeywords('office 95 biff php');
// Save Excel 95 file
$filename = $helper->getFilename(__FILE__, 'xls');
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
$callStartTime = microtime(true);
$writer->save($filename);
$helper->logWrite($writer, $filename, $callStartTime);
$helper->logEndingNotes();
// Reread File
$helper->log('Reread Xls file');
$spreadsheetRead = IOFactory::load($filename);
// Set properties
$helper->log('Get properties');
$helper->log('Core Properties:');
$helper->log(' Created by - ' . $spreadsheet->getProperties()->getCreator());
$helper->log(' Created on - ' . date('d-M-Y' . $spreadsheet->getProperties()->getCreated()) . ' at ' . date('H:i:s' . $spreadsheet->getProperties()->getCreated()));
$helper->log(' Last Modified by - ' . $spreadsheet->getProperties()->getLastModifiedBy());
$helper->log(' Last Modified on - ' . date('d-M-Y' . $spreadsheet->getProperties()->getModified()) . ' at ' . date('H:i:s' . $spreadsheet->getProperties()->getModified()));
$helper->log(' Title - ' . $spreadsheet->getProperties()->getTitle());
$helper->log(' Subject - ' . $spreadsheet->getProperties()->getSubject());
$helper->log(' Description - ' . $spreadsheet->getProperties()->getDescription());
$helper->log(' Keywords: - ' . $spreadsheet->getProperties()->getKeywords());
$helper->log('Extended (Application) Properties:');
$helper->log(' Category - ' . $spreadsheet->getProperties()->getCategory());
$helper->log(' Company - ' . $spreadsheet->getProperties()->getCompany());
$helper->log(' Manager - ' . $spreadsheet->getProperties()->getManager());
$helper->log('Custom Properties:');
$customProperties = $spreadsheet->getProperties()->getCustomProperties();
foreach ($customProperties as $customProperty) {
$propertyValue = $spreadsheet->getProperties()->getCustomPropertyValue($customProperty);
$propertyType = $spreadsheet->getProperties()->getCustomPropertyType($customProperty);
if ($propertyType == Properties::PROPERTY_TYPE_DATE) {
$formattedValue = is_numeric($propertyValue) ? date('d-M-Y H:i:s', (int) $propertyValue) : '*****INVALID*****';
} elseif ($propertyType == Properties::PROPERTY_TYPE_BOOLEAN) {
$formattedValue = $propertyValue ? 'TRUE' : 'FALSE';
} else {
$formattedValue = $propertyValue;
}
$helper->log(' ' . $customProperty . ' - (' . $propertyType . ') - ' . $formattedValue);
}
$helper->logEndingNotes();
+32
View File
@@ -0,0 +1,32 @@
<?php
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\SheetView;
require __DIR__ . '/../Header.php';
// Create new Spreadsheet object
$helper->log('Create new Spreadsheet object');
$spreadsheet = new Spreadsheet();
// Set document properties
$helper->log('Set document properties');
$spreadsheet->getProperties()->setCreator('PHPOffice')
->setLastModifiedBy('PHPOffice')
->setTitle('PhpSpreadsheet Test Document')
->setSubject('PhpSpreadsheet Test Document')
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
->setKeywords('Office PhpSpreadsheet php')
->setCategory('Test result file');
// Add some data
$helper->log('Add some data');
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!');
// Set the page layout view as page layout
$spreadsheet->getActiveSheet()->getSheetView()->setView(SheetView::SHEETVIEW_PAGE_LAYOUT);
// Save
$helper->write($spreadsheet, __FILE__);
+57
View File
@@ -0,0 +1,57 @@
<?php
use PhpOffice\PhpSpreadsheet\Spreadsheet;
require __DIR__ . '/../Header.php';
// Create new Spreadsheet object
$helper->log('Create new Spreadsheet object');
$spreadsheet = new Spreadsheet();
// Set document properties
$helper->log('Set document properties');
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
->setLastModifiedBy('Maarten Balliauw')
->setTitle('PhpSpreadsheet Test Document')
->setSubject('PhpSpreadsheet Test Document')
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
->setKeywords('office PhpSpreadsheet php')
->setCategory('Test result file');
// Add some data
$helper->log('Add some data');
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!');
// Miscellaneous glyphs, UTF-8
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A4', 'Miscellaneous glyphs')
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
$spreadsheet->getActiveSheet()->setCellValue('A8', "Hello\nWorld");
$spreadsheet->getActiveSheet()->getRowDimension(8)->setRowHeight(-1);
$spreadsheet->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);
// Rename worksheet
$helper->log('Rename worksheet');
$spreadsheet->getActiveSheet()->setTitle('Simple');
// Clone worksheet
$helper->log('Clone worksheet');
$clonedSheet = clone $spreadsheet->getActiveSheet();
$clonedSheet
->setCellValue('A1', 'Goodbye')
->setCellValue('A2', 'cruel')
->setCellValue('C1', 'Goodbye')
->setCellValue('C2', 'cruel');
// Rename cloned worksheet
$helper->log('Rename cloned worksheet');
$clonedSheet->setTitle('Simple Clone');
$spreadsheet->addSheet($clonedSheet);
// Save
$helper->write($spreadsheet, __FILE__);
+131
View File
@@ -0,0 +1,131 @@
<?php
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
use PhpOffice\PhpSpreadsheet\NamedRange;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
require __DIR__ . '/../Header.php';
// Create new Spreadsheet object
$helper->log('Create new Spreadsheet object');
$spreadsheet = new Spreadsheet();
// Set document properties
$helper->log('Set document properties');
$spreadsheet->getProperties()
->setCreator('PHPOffice')
->setLastModifiedBy('PHPOffice')
->setTitle('PhpSpreadsheet Test Document')
->setSubject('PhpSpreadsheet Test Document')
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
->setKeywords('Office PhpSpreadsheet php')
->setCategory('Test result file');
function transpose(string $value): array
{
return [$value];
}
// Add some data
$continentColumn = 'D';
$column = 'F';
// Set data for dropdowns
$continents = glob(__DIR__ . '/data/continents/*') ?: [];
foreach ($continents as $key => $filename) {
$continent = pathinfo($filename, PATHINFO_FILENAME);
$helper->log("Loading $continent");
$continent = str_replace(' ', '_', $continent);
$countries = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ?: [];
$countryCount = count($countries);
// Transpose $countries from a row to a column array
$countries = array_map(fn (mixed $value): array => [$value], $countries);
$spreadsheet->getActiveSheet()
->fromArray($countries, null, $column . '1');
$spreadsheet->addNamedRange(
new NamedRange(
$continent,
$spreadsheet->getActiveSheet(),
'$' . $column . '$1:$' . $column . '$' . $countryCount
)
);
$spreadsheet->getActiveSheet()
->getColumnDimension($column)
->setVisible(false);
$spreadsheet->getActiveSheet()
->setCellValue($continentColumn . ($key + 1), $continent);
++$column;
}
// Hide the dropdown data
$spreadsheet->getActiveSheet()
->getColumnDimension($continentColumn)
->setVisible(false);
$spreadsheet->addNamedRange(
new NamedRange(
'Continents',
$spreadsheet->getActiveSheet(),
'$' . $continentColumn . '$1:$' . $continentColumn . '$' . count($continents)
)
);
// Set selection cells
$spreadsheet->getActiveSheet()
->setCellValue('A1', 'Continent:');
$spreadsheet->getActiveSheet()
->setCellValue('B1', 'Select continent');
$spreadsheet->getActiveSheet()
->setCellValue('B3', '=' . $column . 1);
$spreadsheet->getActiveSheet()
->setCellValue('B3', 'Select country');
$spreadsheet->getActiveSheet()
->getStyle('A1:A3')
->getFont()->setBold(true);
// Set linked validators
$validation = $spreadsheet->getActiveSheet()
->getCell('B1')
->getDataValidation();
$validation->setType(DataValidation::TYPE_LIST)
->setErrorStyle(DataValidation::STYLE_INFORMATION)
->setAllowBlank(false)
->setShowInputMessage(true)
->setShowErrorMessage(true)
->setShowDropDown(true)
->setErrorTitle('Input error')
->setError('Continent is not in the list.')
->setPromptTitle('Pick from the list')
->setPrompt('Please pick a continent from the drop-down list.')
->setFormula1('=Continents');
$spreadsheet->getActiveSheet()
->setCellValue('A3', 'Country:');
$spreadsheet->getActiveSheet()
->getStyle('A3')
->getFont()->setBold(true);
$validation = $spreadsheet->getActiveSheet()
->getCell('B3')
->getDataValidation();
$validation->setType(DataValidation::TYPE_LIST)
->setErrorStyle(DataValidation::STYLE_INFORMATION)
->setAllowBlank(false)
->setShowInputMessage(true)
->setShowErrorMessage(true)
->setShowDropDown(true)
->setErrorTitle('Input error')
->setError('Country is not in the list.')
->setPromptTitle('Pick from the list')
->setPrompt('Please pick a country from the drop-down list.')
->setFormula1('=INDIRECT($B$1)');
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(12);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
// Save
$helper->log('Not writing to Xls - formulae with defined names not yet supported');
$helper->write($spreadsheet, __FILE__, ['Xlsx']);
+54
View File
@@ -0,0 +1,54 @@
Algeria
Angola
Benin
Botswana
Burkina
Burundi
Cameroon
Cape Verde
Central African Republic
Chad
Comoros
Congo
Congo, Democratic Republic of
Djibouti
Egypt
Equatorial Guinea
Eritrea
Ethiopia
Gabon
Gambia
Ghana
Guinea
Guinea-Bissau
Ivory Coast
Kenya
Lesotho
Liberia
Libya
Madagascar
Malawi
Mali
Mauritania
Mauritius
Morocco
Mozambique
Namibia
Niger
Nigeria
Rwanda
Sao Tome and Principe
Senegal
Seychelles
Sierra Leone
Somalia
South Africa
South Sudan
Sudan
Swaziland
Tanzania
Togo
Tunisia
Uganda
Zambia
Zimbabwe
+44
View File
@@ -0,0 +1,44 @@
Afghanistan
Bahrain
Bangladesh
Bhutan
Brunei
Burma (Myanmar)
Cambodia
China
East Timor
India
Indonesia
Iran
Iraq
Israel
Japan
Jordan
Kazakhstan
Korea, North
Korea, South
Kuwait
Kyrgyzstan
Laos
Lebanon
Malaysia
Maldives
Mongolia
Nepal
Oman
Pakistan
Philippines
Qatar
Russian Federation
Saudi Arabia
Singapore
Sri Lanka
Syria
Tajikistan
Thailand
Turkey
Turkmenistan
United Arab Emirates
Uzbekistan
Vietnam
Yemen
+47
View File
@@ -0,0 +1,47 @@
Albania
Andorra
Armenia
Austria
Azerbaijan
Belarus
Belgium
Bosnia and Herzegovina
Bulgaria
Croatia
Cyprus
Czech Republic
Denmark
Estonia
Finland
France
Georgia
Germany
Greece
Hungary
Iceland
Ireland
Italy
Latvia
Liechtenstein
Lithuania
Luxembourg
Macedonia
Malta
Moldova
Monaco
Montenegro
Netherlands
Norway
Poland
Portugal
Romania
San Marino
Serbia
Slovakia
Slovenia
Spain
Sweden
Switzerland
Ukraine
United Kingdom
Vatican City
@@ -0,0 +1,23 @@
Antigua and Barbuda
Bahamas
Barbados
Belize
Canada
Costa Rica
Cuba
Dominica
Dominican Republic
El Salvador
Grenada
Guatemala
Haiti
Honduras
Jamaica
Mexico
Nicaragua
Panama
Saint Kitts and Nevis
Saint Lucia
Saint Vincent and the Grenadines
Trinidad and Tobago
United States
@@ -0,0 +1,14 @@
Australia
Fiji
Kiribati
Marshall Islands
Micronesia
Nauru
New Zealand
Palau
Papua New Guinea
Samoa
Solomon Islands
Tonga
Tuvalu
Vanuatu
@@ -0,0 +1,12 @@
Argentina
Bolivia
Brazil
Chile
Colombia
Ecuador
Guyana
Paraguay
Peru
Suriname
Uruguay
Venezuela