mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-08-17 18:41:36 +00:00
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:
@@ -1,51 +0,0 @@
|
||||
<?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('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Hello');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B2', 'world!');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C1', 'Hello');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D2', 'world!');
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()->setTitle('Simple');
|
||||
|
||||
// Set document security
|
||||
$helper->log('Set document security');
|
||||
$spreadsheet->getSecurity()->setLockWindows(true);
|
||||
$spreadsheet->getSecurity()->setLockStructure(true);
|
||||
$spreadsheet->getSecurity()->setWorkbookPassword('PhpSpreadsheet');
|
||||
|
||||
// Set sheet security
|
||||
$helper->log('Set sheet security');
|
||||
$spreadsheet->getActiveSheet()->getProtection()->setPassword('PhpSpreadsheet');
|
||||
// setSheet should be true in order to enable protection!
|
||||
$spreadsheet->getActiveSheet()->getProtection()->setSheet(true);
|
||||
// The following are set to false, i.e. user is allowed to
|
||||
// sort, insert rows, or format cells without unprotecting sheet.
|
||||
$spreadsheet->getActiveSheet()->getProtection()->setSort(false);
|
||||
$spreadsheet->getActiveSheet()->getProtection()->setInsertRows(false);
|
||||
$spreadsheet->getActiveSheet()->getProtection()->setFormatCells(false);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Protection;
|
||||
|
||||
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('Mark Baker')
|
||||
->setLastModifiedBy('Mark Baker')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Crouching');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B1', 'Tiger');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A2', 'Hidden');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B2', 'Dragon');
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()->setTitle('Simple');
|
||||
|
||||
// Set document security
|
||||
$helper->log('Set cell protection');
|
||||
|
||||
// Set sheet security
|
||||
$helper->log('Set sheet security');
|
||||
$spreadsheet->getActiveSheet()->getProtection()->setSheet(true);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('A2:B2')
|
||||
->getProtection()->setLocked(
|
||||
Protection::PROTECTION_UNPROTECTED
|
||||
);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,179 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
mt_srand(1234567890);
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// List functions
|
||||
$helper->log('List implemented functions');
|
||||
$calc = Calculation::getInstance();
|
||||
print_r($calc->getImplementedFunctionNames());
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Add some data, we will use some formulas here
|
||||
$helper->log('Add some data and formulas');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A14', 'Count:')
|
||||
->setCellValue('A15', 'Sum:')
|
||||
->setCellValue('A16', 'Max:')
|
||||
->setCellValue('A17', 'Min:')
|
||||
->setCellValue('A18', 'Average:')
|
||||
->setCellValue('A19', 'Median:')
|
||||
->setCellValue('A20', 'Mode:');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A22', 'CountA:')
|
||||
->setCellValue('A23', 'MaxA:')
|
||||
->setCellValue('A24', 'MinA:');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A26', 'StDev:')
|
||||
->setCellValue('A27', 'StDevA:')
|
||||
->setCellValue('A28', 'StDevP:')
|
||||
->setCellValue('A29', 'StDevPA:');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A31', 'DevSq:')
|
||||
->setCellValue('A32', 'Var:')
|
||||
->setCellValue('A33', 'VarA:')
|
||||
->setCellValue('A34', 'VarP:')
|
||||
->setCellValue('A35', 'VarPA:');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A37', 'Date:');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B1', 'Range 1')
|
||||
->setCellValue('B2', 2)
|
||||
->setCellValue('B3', 8)
|
||||
->setCellValue('B4', 10)
|
||||
->setCellValue('B5', true)
|
||||
->setCellValue('B6', false)
|
||||
->setCellValue('B7', 'Text String')
|
||||
->setCellValue('B9', '22')
|
||||
->setCellValue('B10', 4)
|
||||
->setCellValue('B11', 6)
|
||||
->setCellValue('B12', 12);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)')
|
||||
->setCellValue('B15', '=SUM(B2:B12)')
|
||||
->setCellValue('B16', '=MAX(B2:B12)')
|
||||
->setCellValue('B17', '=MIN(B2:B12)')
|
||||
->setCellValue('B18', '=AVERAGE(B2:B12)')
|
||||
->setCellValue('B19', '=MEDIAN(B2:B12)')
|
||||
->setCellValue('B20', '=MODE(B2:B12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B22', '=COUNTA(B2:B12)')
|
||||
->setCellValue('B23', '=MAXA(B2:B12)')
|
||||
->setCellValue('B24', '=MINA(B2:B12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B26', '=STDEV(B2:B12)')
|
||||
->setCellValue('B27', '=STDEVA(B2:B12)')
|
||||
->setCellValue('B28', '=STDEVP(B2:B12)')
|
||||
->setCellValue('B29', '=STDEVPA(B2:B12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B31', '=DEVSQ(B2:B12)')
|
||||
->setCellValue('B32', '=VAR(B2:B12)')
|
||||
->setCellValue('B33', '=VARA(B2:B12)')
|
||||
->setCellValue('B34', '=VARP(B2:B12)')
|
||||
->setCellValue('B35', '=VARPA(B2:B12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B37', '=DATE(2007, 12, 21)')
|
||||
->setCellValue('B38', '=DATEDIF( DATE(2007, 12, 21), DATE(2007, 12, 22), "D" )')
|
||||
->setCellValue('B39', '=DATEVALUE("01-Feb-2006 10:06 AM")')
|
||||
->setCellValue('B40', '=DAY( DATE(2006, 1, 2) )')
|
||||
->setCellValue('B41', '=DAYS360( DATE(2002, 2, 3), DATE(2005, 5, 31) )');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C1', 'Range 2')
|
||||
->setCellValue('C2', 1)
|
||||
->setCellValue('C3', 2)
|
||||
->setCellValue('C4', 2)
|
||||
->setCellValue('C5', 3)
|
||||
->setCellValue('C6', 3)
|
||||
->setCellValue('C7', 3)
|
||||
->setCellValue('C8', '0')
|
||||
->setCellValue('C9', 4)
|
||||
->setCellValue('C10', 4)
|
||||
->setCellValue('C11', 4)
|
||||
->setCellValue('C12', 4);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)')
|
||||
->setCellValue('C15', '=SUM(C2:C12)')
|
||||
->setCellValue('C16', '=MAX(C2:C12)')
|
||||
->setCellValue('C17', '=MIN(C2:C12)')
|
||||
->setCellValue('C18', '=AVERAGE(C2:C12)')
|
||||
->setCellValue('C19', '=MEDIAN(C2:C12)')
|
||||
->setCellValue('C20', '=MODE(C2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C22', '=COUNTA(C2:C12)')
|
||||
->setCellValue('C23', '=MAXA(C2:C12)')
|
||||
->setCellValue('C24', '=MINA(C2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C26', '=STDEV(C2:C12)')
|
||||
->setCellValue('C27', '=STDEVA(C2:C12)')
|
||||
->setCellValue('C28', '=STDEVP(C2:C12)')
|
||||
->setCellValue('C29', '=STDEVPA(C2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C31', '=DEVSQ(C2:C12)')
|
||||
->setCellValue('C32', '=VAR(C2:C12)')
|
||||
->setCellValue('C33', '=VARA(C2:C12)')
|
||||
->setCellValue('C34', '=VARP(C2:C12)')
|
||||
->setCellValue('C35', '=VARPA(C2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D1', 'Range 3')
|
||||
->setCellValue('D2', 2)
|
||||
->setCellValue('D3', 3)
|
||||
->setCellValue('D4', 4);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D14', '=((D2 * D3) + D4) & " should be 10"');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E12', 'Other functions')
|
||||
->setCellValue('E14', '=PI()')
|
||||
->setCellValue('E15', '=RAND()')
|
||||
->setCellValue('E16', '=RANDBETWEEN(5, 10)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E17', 'Count of both ranges:')
|
||||
->setCellValue('F17', '=COUNT(B2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E18', 'Total of both ranges:')
|
||||
->setCellValue('F18', '=SUM(B2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E19', 'Maximum of both ranges:')
|
||||
->setCellValue('F19', '=MAX(B2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E20', 'Minimum of both ranges:')
|
||||
->setCellValue('F20', '=MIN(B2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E21', 'Average of both ranges:')
|
||||
->setCellValue('F21', '=AVERAGE(B2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E22', 'Median of both ranges:')
|
||||
->setCellValue('F22', '=MEDIAN(B2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E23', 'Mode of both ranges:')
|
||||
->setCellValue('F23', '=MODE(B2:C12)');
|
||||
|
||||
// Calculated data
|
||||
$helper->log('Calculated data');
|
||||
for ($col = 'B'; $col != 'G'; ++$col) {
|
||||
for ($row = 14; $row <= 41; ++$row) {
|
||||
$formula = $spreadsheet->getActiveSheet()->getCell($col . $row)->getValue();
|
||||
if (
|
||||
is_string($formula)
|
||||
&& ($formula[0] == '=')
|
||||
) {
|
||||
$helper->log('Value of ' . $col . $row . ' [' . $formula . ']: ' . $spreadsheet->getActiveSheet()->getCell($col . $row)->getCalculatedValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If we set Pre Calculated Formulas to true then PhpSpreadsheet will calculate all formulae in the
|
||||
// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae
|
||||
// using functions or features (such as array formulae) that aren't yet supported by the calculation engine
|
||||
// If the value is false (the default) for the Xlsx Writer, then MS Excel (or the application used to
|
||||
// open the file) will need to recalculate values itself to guarantee that the correct results are available.
|
||||
//
|
||||
//$writer->setPreCalculateFormulas(true);
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Add some data, we will use some formulas here
|
||||
$helper->log('Add some data and formulas');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', '=B1')
|
||||
->setCellValue('A2', '=B2+1')
|
||||
->setCellValue('B1', '=A1+1')
|
||||
->setCellValue('B2', '=A2');
|
||||
|
||||
Calculation::getInstance($spreadsheet)->cyclicFormulaCount = 15;
|
||||
|
||||
// Calculated data
|
||||
$helper->log('Calculated data');
|
||||
for ($row = 1; $row <= 2; ++$row) {
|
||||
for ($col = 'A'; $col != 'C'; ++$col) {
|
||||
$formula = $spreadsheet->getActiveSheet()->getCell($col . $row)->getValue();
|
||||
if (
|
||||
is_string($formula)
|
||||
&& ($formula[0] == '=')
|
||||
) {
|
||||
$helper->log('Value of ' . $col . $row . ' [' . $formula . ']: ' . $spreadsheet->getActiveSheet()->getCell($col . $row)->getCalculatedValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
|
||||
$filename = $helper->getFilename(__FILE__, 'xls');
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
|
||||
|
||||
$callStartTime = microtime(true);
|
||||
$writer->save($filename);
|
||||
$helper->logWrite($writer, $filename, $callStartTime);
|
||||
@@ -1,80 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
|
||||
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('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Create a first sheet
|
||||
$helper->log('Add data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Cell B3 and B5 contain data validation...')
|
||||
->setCellValue('A3', 'Number:')
|
||||
->setCellValue('B3', '10')
|
||||
->setCellValue('A5', 'List:')
|
||||
->setCellValue('B5', 'Item A')
|
||||
->setCellValue('A7', 'List #2:')
|
||||
->setCellValue('B7', 'Item #2')
|
||||
->setCellValue('D2', 'Item #1')
|
||||
->setCellValue('D3', 'Item #2')
|
||||
->setCellValue('D4', 'Item #3')
|
||||
->setCellValue('D5', 'Item #4')
|
||||
->setCellValue('D6', 'Item #5');
|
||||
|
||||
// Set data validation
|
||||
$helper->log('Set data validation');
|
||||
$validation = $spreadsheet->getActiveSheet()->getCell('B3')->getDataValidation();
|
||||
$validation->setType(DataValidation::TYPE_WHOLE);
|
||||
$validation->setErrorStyle(DataValidation::STYLE_STOP);
|
||||
$validation->setAllowBlank(true);
|
||||
$validation->setShowInputMessage(true);
|
||||
$validation->setShowErrorMessage(true);
|
||||
$validation->setErrorTitle('Input error');
|
||||
$validation->setError('Only numbers between 10 and 20 are allowed!');
|
||||
$validation->setPromptTitle('Allowed input');
|
||||
$validation->setPrompt('Only numbers between 10 and 20 are allowed.');
|
||||
$validation->setFormula1(10);
|
||||
$validation->setFormula2(20);
|
||||
|
||||
$validation = $spreadsheet->getActiveSheet()->getCell('B5')->getDataValidation();
|
||||
$validation->setType(DataValidation::TYPE_LIST);
|
||||
$validation->setErrorStyle(DataValidation::STYLE_INFORMATION);
|
||||
$validation->setAllowBlank(false);
|
||||
$validation->setShowInputMessage(true);
|
||||
$validation->setShowErrorMessage(true);
|
||||
$validation->setShowDropDown(true);
|
||||
$validation->setErrorTitle('Input error');
|
||||
$validation->setError('Value is not in list.');
|
||||
$validation->setPromptTitle('Pick from list');
|
||||
$validation->setPrompt('Please pick a value from the drop-down list.');
|
||||
$validation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " if your list is simply a comma-separated list of values !!!
|
||||
|
||||
$validation = $spreadsheet->getActiveSheet()->getCell('B7')->getDataValidation();
|
||||
$validation->setType(DataValidation::TYPE_LIST);
|
||||
$validation->setErrorStyle(DataValidation::STYLE_INFORMATION);
|
||||
$validation->setAllowBlank(false);
|
||||
$validation->setShowInputMessage(true);
|
||||
$validation->setShowErrorMessage(true);
|
||||
$validation->setShowDropDown(true);
|
||||
$validation->setErrorTitle('Input error');
|
||||
$validation->setError('Value is not in list.');
|
||||
$validation->setPromptTitle('Pick from list');
|
||||
$validation->setPrompt('Please pick a value from the drop-down list.');
|
||||
$validation->setFormula1('$D$2:$D$6'); // Make sure NOT to put a range of cells or a formula between " and "
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Csv as CsvReader;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Csv as CsvWriter;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
|
||||
$helper->log('Write to CSV format');
|
||||
$writer = new CsvWriter($spreadsheet);
|
||||
$writer->setDelimiter(',')
|
||||
->setEnclosure('"')
|
||||
->setSheetIndex(0);
|
||||
|
||||
$callStartTime = microtime(true);
|
||||
$filename = $helper->getTemporaryFilename('csv');
|
||||
$writer->save($filename);
|
||||
$helper->logWrite($writer, $filename, $callStartTime);
|
||||
|
||||
$helper->log('Read from CSV format');
|
||||
|
||||
$reader = new CsvReader();
|
||||
$reader->setDelimiter(',')
|
||||
->setEnclosure('"')
|
||||
->setSheetIndex(0);
|
||||
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheetFromCSV = $reader->load($filename);
|
||||
$helper->logRead('Csv', $filename, $callStartTime);
|
||||
unlink($filename);
|
||||
|
||||
// Write Xlsx
|
||||
$helper->write($spreadsheetFromCSV, __FILE__, ['Xlsx']);
|
||||
|
||||
// Write CSV
|
||||
$filenameCSV = $helper->getFilename(__FILE__, 'csv');
|
||||
$writerCSV = new CsvWriter($spreadsheetFromCSV);
|
||||
//$writerCSV->setExcelCompatibility(true);
|
||||
$writerCSV->setUseBom(true); // because of non-ASCII chars
|
||||
|
||||
$callStartTime = microtime(true);
|
||||
$writerCSV->save($filenameCSV);
|
||||
$helper->logWrite($writerCSV, $filenameCSV, $callStartTime);
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
$spreadsheet->getProperties()->setTitle('Non-embedded images');
|
||||
|
||||
$helper->write($spreadsheet, __FILE__, ['Html']);
|
||||
@@ -1,17 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Html;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
$spreadsheet->getProperties()->setTitle('Embedded images');
|
||||
|
||||
$helper->write(
|
||||
$spreadsheet,
|
||||
__FILE__,
|
||||
['Html'],
|
||||
false,
|
||||
function (Html $writer): void {
|
||||
$writer->setEmbedImages(true);
|
||||
}
|
||||
);
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Html;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
|
||||
function changeGridlines(string $html): string
|
||||
{
|
||||
return str_replace('{border: 1px solid black;}', '{border: 2px dashed red;}', $html);
|
||||
}
|
||||
|
||||
$helper->write(
|
||||
$spreadsheet,
|
||||
__FILE__,
|
||||
['Html'],
|
||||
false,
|
||||
function (Html $writer): void {
|
||||
$writer->setEmbedImages(true);
|
||||
$writer->setEditHtmlCallback('changeGridlines');
|
||||
}
|
||||
);
|
||||
@@ -1,69 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// List functions
|
||||
$helper->log('List implemented functions');
|
||||
$calc = Calculation::getInstance();
|
||||
print_r($calc->getImplementedFunctionNames());
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Add some data, we will use some formulas here
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A14', 'Count:');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B1', 'Range 1');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B2', 2);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B3', 8);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B4', 10);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B5', true);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B6', false);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B7', 'Text String');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B9', '22');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B10', 4);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B11', 6);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B12', 12);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C1', 'Range 2');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C2', 1);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C3', 2);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C4', 2);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C5', 3);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C6', 3);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C7', 3);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C8', '0');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C9', 4);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C10', 4);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C11', 4);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C12', 4);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D1', 'Range 3');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D2', 2);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D3', 3);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D4', 4);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('D5', '=((D2 * D3) + D4) & " should be 10"');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E1', 'Other functions');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E2', '=PI()');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E3', '=RAND()');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E4', '=RANDBETWEEN(5, 10)');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('E14', 'Count of both ranges:');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('F14', '=COUNT(B2:C12)');
|
||||
|
||||
// Calculated data
|
||||
$helper->log('Calculated data');
|
||||
$helper->log('Value of B14 [=COUNT(B2:B12)]: ' . $spreadsheet->getActiveSheet()->getCell('B14')->getCalculatedValue());
|
||||
|
||||
$helper->logEndingNotes();
|
||||
@@ -1,73 +0,0 @@
|
||||
<?php
|
||||
|
||||
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('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Firstname:')
|
||||
->setCellValue('A2', 'Lastname:')
|
||||
->setCellValue('A3', 'Fullname:')
|
||||
->setCellValue('B1', 'Maarten')
|
||||
->setCellValue('B2', 'Balliauw')
|
||||
->setCellValue('B3', '=B1 & " " & B2');
|
||||
|
||||
// Define named ranges
|
||||
$helper->log('Define named ranges');
|
||||
$spreadsheet->addNamedRange(new NamedRange('PersonName', $spreadsheet->getActiveSheet(), '$B$1'));
|
||||
$spreadsheet->addNamedRange(new NamedRange('PersonLN', $spreadsheet->getActiveSheet(), '$B$2'));
|
||||
|
||||
// Rename named ranges
|
||||
$helper->log('Rename named ranges');
|
||||
if ($spreadsheet->getNamedRange('PersonName') === null) {
|
||||
throw new Exception('named range not found');
|
||||
}
|
||||
$spreadsheet->getNamedRange('PersonName')->setName('PersonFN');
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()->setTitle('Person');
|
||||
|
||||
// Create a new worksheet, after the default sheet
|
||||
$helper->log('Create new Worksheet object');
|
||||
$spreadsheet->createSheet();
|
||||
|
||||
// Add some data to the second sheet, resembling some different data types
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->setActiveSheetIndex(1);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Firstname:')
|
||||
->setCellValue('A2', 'Lastname:')
|
||||
->setCellValue('A3', 'Fullname:')
|
||||
->setCellValue('B1', '=PersonFN')
|
||||
->setCellValue('B2', '=PersonLN')
|
||||
->setCellValue('B3', '=PersonFN & " " & PersonLN');
|
||||
|
||||
// Resolve range
|
||||
$helper->log('Resolve range');
|
||||
$helper->log('Cell B1 {=PersonFN}: ' . $spreadsheet->getActiveSheet()->getCell('B1')->getCalculatedValue());
|
||||
$helper->log('Cell B3 {=PersonFN & " " & PersonLN}: ' . $spreadsheet->getActiveSheet()->getCell('B3')->getCalculatedValue());
|
||||
$helper->log('Cell Person!B1: ' . $spreadsheet->getActiveSheet()->getCell('Person!B1')->getCalculatedValue());
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()->setTitle('Person (cloned)');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$filename = __DIR__ . '/../templates/excel2003.xml';
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet = IOFactory::load($filename);
|
||||
$helper->logRead('Xml', $filename, $callStartTime);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$filename = __DIR__ . '/../templates/GnumericTest.gnumeric';
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet = IOFactory::load($filename);
|
||||
$helper->logRead('Gnumeric', $filename, $callStartTime);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$filename = __DIR__ . '/../templates/OOCalcTest.ods';
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet = IOFactory::load($filename);
|
||||
$helper->logRead('Ods', $filename, $callStartTime);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$filename = __DIR__ . '/../templates/SylkTest.slk';
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet = IOFactory::load($filename);
|
||||
$helper->logRead('Slk', $filename, $callStartTime);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
|
||||
// Write temporary file
|
||||
$filename = $helper->getTemporaryFilename('xls');
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
|
||||
$callStartTime = microtime(true);
|
||||
$writer->save($filename);
|
||||
$helper->logWrite($writer, $filename, $callStartTime);
|
||||
|
||||
// Read Xls file
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet = IOFactory::load($filename);
|
||||
$helper->logRead('Xls', $filename, $callStartTime);
|
||||
unlink($filename);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Border;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
||||
|
||||
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('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:T100')->applyFromArray(
|
||||
['fill' => [
|
||||
'fillType' => Fill::FILL_SOLID,
|
||||
'color' => ['argb' => 'FFCCFFCC'],
|
||||
],
|
||||
'borders' => [
|
||||
'bottom' => ['borderStyle' => Border::BORDER_THIN],
|
||||
'right' => ['borderStyle' => Border::BORDER_MEDIUM],
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$spreadsheet->getActiveSheet()->getStyle('C5:R95')->applyFromArray(
|
||||
['fill' => [
|
||||
'fillType' => Fill::FILL_SOLID,
|
||||
'color' => ['argb' => 'FFFFFF00'],
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Border;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Style;
|
||||
|
||||
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('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
$sharedStyle1 = new Style();
|
||||
$sharedStyle2 = new Style();
|
||||
|
||||
$sharedStyle1->applyFromArray(
|
||||
['fill' => [
|
||||
'fillType' => Fill::FILL_SOLID,
|
||||
'color' => ['argb' => 'FFCCFFCC'],
|
||||
],
|
||||
'borders' => [
|
||||
'bottom' => ['borderStyle' => Border::BORDER_THIN],
|
||||
'right' => ['borderStyle' => Border::BORDER_MEDIUM],
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$sharedStyle2->applyFromArray(
|
||||
['fill' => [
|
||||
'fillType' => Fill::FILL_SOLID,
|
||||
'color' => ['argb' => 'FFFFFF00'],
|
||||
],
|
||||
'borders' => [
|
||||
'bottom' => ['borderStyle' => Border::BORDER_THIN],
|
||||
'right' => ['borderStyle' => Border::BORDER_MEDIUM],
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$spreadsheet->getActiveSheet()->duplicateStyle($sharedStyle1, 'A1:T100');
|
||||
$spreadsheet->getActiveSheet()->duplicateStyle($sharedStyle2, 'C5:R95');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheet;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\IReadFilter;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Write temporary file
|
||||
$largeSpreadsheet = require __DIR__ . '/../templates/largeSpreadsheet.php';
|
||||
$writer = new Xlsx($largeSpreadsheet);
|
||||
$filename = $helper->getTemporaryFilename();
|
||||
$callStartTime = microtime(true);
|
||||
$writer->save($filename);
|
||||
$helper->logWrite($writer, $filename, $callStartTime);
|
||||
|
||||
class MyReadFilter implements IReadFilter
|
||||
{
|
||||
public function readCell(string $columnAddress, int $row, string $worksheetName = ''): bool
|
||||
{
|
||||
// Read title row and rows 20 - 30
|
||||
if ($row == 1 || ($row >= 20 && $row <= 30)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$helper->log('Load from Xlsx file');
|
||||
$reader = new XlsxReader();
|
||||
$reader->setReadFilter(new MyReadFilter());
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet = $reader->load($filename);
|
||||
unlink($filename);
|
||||
$helper->logRead('Xlsx', $filename, $callStartTime);
|
||||
$helper->log('Remove unnecessary rows');
|
||||
$spreadsheet->getActiveSheet()->removeRow(2, 18);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,81 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\BaseWriter;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet1 = $spreadsheet->getActiveSheet();
|
||||
$sheet1->setTitle('SheetWithData');
|
||||
$sheet1->getCell('G1')->setValue('X');
|
||||
$sheet1->getCell('E5')->setValue('Y');
|
||||
$sheet1->getCell('A8')->setValue('Z');
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Generate an image
|
||||
$helper->log('Generate an image');
|
||||
$gdImage = imagecreatetruecolor(120, 20);
|
||||
if (!$gdImage) {
|
||||
throw new Exception('Cannot Initialize new GD image stream');
|
||||
}
|
||||
|
||||
$textColor = imagecolorallocate($gdImage, 255, 255, 255);
|
||||
if ($textColor === false) {
|
||||
throw new Exception('imagecolorallocate failed');
|
||||
}
|
||||
imagestring($gdImage, 1, 5, 5, 'Created with PhpSpreadsheet', $textColor);
|
||||
|
||||
// Add a drawing to the worksheet
|
||||
$helper->log('Add a drawing to the worksheet');
|
||||
$drawing = new MemoryDrawing();
|
||||
$drawing->setName('Sample image');
|
||||
$drawing->setDescription('Sample image');
|
||||
$drawing->setImageResource($gdImage);
|
||||
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_JPEG);
|
||||
$drawing->setMimeType(MemoryDrawing::MIMETYPE_DEFAULT);
|
||||
$drawing->setHeight(36);
|
||||
$drawing->setWorksheet($sheet1);
|
||||
$drawing->setCoordinates('C5');
|
||||
|
||||
$helper->log('Create new sheet');
|
||||
$sheet2 = $spreadsheet->createSheet();
|
||||
$sheet2->setTitle('SheetWithoutData');
|
||||
|
||||
// Add a drawing to the new worksheet
|
||||
$helper->log('Add a drawing to the new worksheet');
|
||||
$drawing = new MemoryDrawing();
|
||||
$drawing->setName('Sample image');
|
||||
$drawing->setDescription('Sample image');
|
||||
$drawing->setImageResource($gdImage);
|
||||
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_JPEG);
|
||||
$drawing->setMimeType(MemoryDrawing::MIMETYPE_DEFAULT);
|
||||
$drawing->setHeight(36);
|
||||
$drawing->setWorksheet($sheet2);
|
||||
$drawing->setCoordinates('C5');
|
||||
|
||||
// Save
|
||||
$helper->write(
|
||||
$spreadsheet,
|
||||
__FILE__,
|
||||
['Xlsx', 'Html'],
|
||||
false,
|
||||
function (BaseWriter $writer): void {
|
||||
if (method_exists($writer, 'writeAllSheets')) {
|
||||
$writer->writeAllSheets();
|
||||
}
|
||||
}
|
||||
);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Csv;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Read from Xlsx (.xlsx) template
|
||||
$helper->log('Load Xlsx template file');
|
||||
$reader = IOFactory::createReader('Xlsx');
|
||||
$spreadsheet = $reader->load(__DIR__ . '/../templates/26template.xlsx');
|
||||
$spreadsheet->getActiveSheet()->setPrintGridlines(true);
|
||||
|
||||
// at this point, we could do some manipulations with the template, but we skip this step
|
||||
$helper->write($spreadsheet, __FILE__, ['Xlsx', 'Xls', 'Html']);
|
||||
|
||||
// Export to PDF (mpdf)
|
||||
$mpdfCjkWriter = function (Mpdf $writer): void {
|
||||
$mpdfCjk = function (string $html): string {
|
||||
$html = str_replace("'Calibri'", "'Calibri',Sun-ExtA", $html);
|
||||
|
||||
return str_replace("'Times New Roman'", "'Times New Roman',Sun-ExtA", $html);
|
||||
};
|
||||
|
||||
$writer->setEditHtmlCallback($mpdfCjk);
|
||||
};
|
||||
|
||||
$helper->log('Write to Mpdf');
|
||||
IOFactory::registerWriter('Pdf', Mpdf::class);
|
||||
$filename = __FILE__;
|
||||
$helper->write($spreadsheet, $filename, ['Pdf'], false, $mpdfCjkWriter);
|
||||
|
||||
// Remove first two rows with field headers before exporting to CSV
|
||||
$helper->log('Removing first two heading rows for CSV export');
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
$worksheet->removeRow(1, 2);
|
||||
|
||||
// Export to CSV (.csv)
|
||||
$helper->log('Write to CSV format');
|
||||
/** @var Csv $writer */
|
||||
$helper->write($spreadsheet, __FILE__, ['Csv']);
|
||||
|
||||
// Export to CSV with BOM (.csv)
|
||||
$filename = str_replace('.php', '-bom.php', __FILE__);
|
||||
$helper->log('Write to CSV format (with BOM)');
|
||||
$helper->write(
|
||||
$spreadsheet,
|
||||
$filename,
|
||||
['Csv'],
|
||||
false,
|
||||
function (Csv $writer): void {
|
||||
$writer->setUseBOM(true);
|
||||
}
|
||||
);
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
|
||||
use PhpOffice\PhpSpreadsheet\Shared\File;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Read from Xls (.xls) template
|
||||
$helper->log('Load Xlsx template file');
|
||||
$reader = IOFactory::createReader('Xls');
|
||||
$initialSpreadsheet = $reader->load(__DIR__ . '/../templates/27template.xls');
|
||||
|
||||
$xlsxFile = File::temporaryFilename();
|
||||
$writer = new XlsxWriter($initialSpreadsheet);
|
||||
$helper->log('Save as Xlsx');
|
||||
$writer->save($xlsxFile);
|
||||
$initialSpreadsheet->disconnectWorksheets();
|
||||
$reader2 = new XlsxReader();
|
||||
$helper->log('Load Xlsx');
|
||||
$spreadsheet = $reader2->load($xlsxFile);
|
||||
|
||||
$helper->log('Hide grid lines');
|
||||
$spreadsheet->getActiveSheet()->setShowGridLines(false);
|
||||
|
||||
$helper->log('Set orientation to landscape');
|
||||
$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
|
||||
|
||||
$className = Mpdf::class;
|
||||
$helper->log("Write to PDF format using {$className}, and to Html");
|
||||
IOFactory::registerWriter('Pdf', $className);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__, ['Pdf', 'Html']);
|
||||
unlink($xlsxFile);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Read from Xls (.xls) template
|
||||
$helper->log('Load Xls template file');
|
||||
$reader = IOFactory::createReader('Xls');
|
||||
$spreadsheet = $reader->load(__DIR__ . '/../templates/27template.xls');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Read from Xlsx (.xls) template
|
||||
$helper->log('Load Xlsx template file');
|
||||
$reader = IOFactory::createReader('Xlsx');
|
||||
// Note that Xlsx converts bmp to png, so it needs to be added
|
||||
// programmatically rather than in template.
|
||||
// Also note Xls converts both bmp and gif to png.
|
||||
$spreadsheet = $reader->load(__DIR__ . '/../templates/27template.xlsx');
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('Test BMP');
|
||||
$drawing->setPath(__DIR__ . '/../images/bmp.bmp');
|
||||
$drawing->setCoordinates('G17');
|
||||
$drawing->setWorksheet($sheet);
|
||||
|
||||
$sheet->getCell('G16')->setValue('BMP');
|
||||
$sheet->getStyle('G16')->getFont()->setName('Arial Black')->setBold(true);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XLsxReader;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XLsxWriter;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$sampleSpreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
$filename = $helper->getTemporaryFilename();
|
||||
$writer = new XLsxWriter($sampleSpreadsheet);
|
||||
$callStartTime = microtime(true);
|
||||
$writer->save($filename);
|
||||
$helper->logWrite($writer, $filename, $callStartTime);
|
||||
|
||||
$callStartTime = microtime(true);
|
||||
$reader = new XLsxReader();
|
||||
$spreadsheet = $reader->load($filename);
|
||||
$helper->logRead('Xlsx', $filename, $callStartTime);
|
||||
unlink($filename);
|
||||
$helper->log('Iterate worksheets');
|
||||
foreach ($spreadsheet->getWorksheetIterator() as $worksheet) {
|
||||
$helper->log('Worksheet - ' . $worksheet->getTitle());
|
||||
|
||||
foreach ($worksheet->getRowIterator() as $row) {
|
||||
$helper->log(' Row number - ' . $row->getRowIndex());
|
||||
|
||||
$cellIterator = $row->getCellIterator();
|
||||
$cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
|
||||
foreach ($cellIterator as $cell) {
|
||||
if ($cell !== null) {
|
||||
$helper->log(' Cell - ' . $cell->getCoordinate() . ' - ' . $cell->getCalculatedValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder;
|
||||
use PhpOffice\PhpSpreadsheet\Cell\Cell;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Set timezone
|
||||
$helper->log('Set timezone');
|
||||
date_default_timezone_set('UTC');
|
||||
|
||||
// Set value binder
|
||||
$helper->log('Set value binder');
|
||||
Cell::setValueBinder(new AdvancedValueBinder());
|
||||
|
||||
// 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('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Set default font
|
||||
$helper->log('Set default font');
|
||||
$spreadsheet->getDefaultStyle()->getFont()->setName('Arial');
|
||||
$spreadsheet->getDefaultStyle()->getFont()->setSize(10);
|
||||
|
||||
// Set column widths
|
||||
$helper->log('Set column widths');
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(14);
|
||||
|
||||
// Add some data, resembling some different data types
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'String value:')
|
||||
->setCellValue('B1', 'Mark Baker');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A2', 'Numeric value #1:')
|
||||
->setCellValue('B2', 12345);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A3', 'Numeric value #2:')
|
||||
->setCellValue('B3', -12.345);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A4', 'Numeric value #3:')
|
||||
->setCellValue('B4', .12345);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A5', 'Numeric value #4:')
|
||||
->setCellValue('B5', '12345');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A6', 'Numeric value #5:')
|
||||
->setCellValue('B6', '1.2345');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A7', 'Numeric value #6:')
|
||||
->setCellValue('B7', '.12345');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A8', 'Numeric value #7:')
|
||||
->setCellValue('B8', '1.234e-5');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A9', 'Numeric value #8:')
|
||||
->setCellValue('B9', '-1.234e+5');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A10', 'Boolean value:')
|
||||
->setCellValue('B10', 'TRUE');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A11', 'Percentage value #1:')
|
||||
->setCellValue('B11', '10%');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A12', 'Percentage value #2:')
|
||||
->setCellValue('B12', '12.5%');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A13', 'Fraction value #1:')
|
||||
->setCellValue('B13', '-1/2');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A14', 'Fraction value #2:')
|
||||
->setCellValue('B14', '3 1/2');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A15', 'Fraction value #3:')
|
||||
->setCellValue('B15', '-12 3/4');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A16', 'Fraction value #4:')
|
||||
->setCellValue('B16', '13/4');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A17', 'Currency value #1:')
|
||||
->setCellValue('B17', '$12345');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A18', 'Currency value #2:')
|
||||
->setCellValue('B18', '$12345.67');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A19', 'Currency value #3:')
|
||||
->setCellValue('B19', '$12,345.67');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A20', 'Date value #1:')
|
||||
->setCellValue('B20', '21 December 1983');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A21', 'Date value #2:')
|
||||
->setCellValue('B21', '19-Dec-1960');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A22', 'Date value #3:')
|
||||
->setCellValue('B22', '07/12/1982');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A23', 'Date value #4:')
|
||||
->setCellValue('B23', '24-11-1950');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A24', 'Date value #5:')
|
||||
->setCellValue('B24', '17-Mar');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A25', 'Time value #1:')
|
||||
->setCellValue('B25', '01:30');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A26', 'Time value #2:')
|
||||
->setCellValue('B26', '01:30:15');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A27', 'Date/Time value:')
|
||||
->setCellValue('B27', '19-Dec-1960 01:30');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A28', 'Formula:')
|
||||
->setCellValue('B28', '=SUM(B2:B9)');
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()->setTitle('Advanced value binder');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,43 +0,0 @@
|
||||
<?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__);
|
||||
@@ -1,43 +0,0 @@
|
||||
<?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__);
|
||||
@@ -1,68 +0,0 @@
|
||||
<?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();
|
||||
@@ -1,68 +0,0 @@
|
||||
<?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();
|
||||
@@ -1,32 +0,0 @@
|
||||
<?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__);
|
||||
@@ -1,57 +0,0 @@
|
||||
<?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__);
|
||||
@@ -1,131 +0,0 @@
|
||||
<?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']);
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Style;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
$helper->log('Create styles array');
|
||||
$styles = [];
|
||||
for ($i = 0; $i < 10; ++$i) {
|
||||
$style = new Style();
|
||||
$style->getFont()->setSize($i + 4);
|
||||
$styles[] = $style;
|
||||
}
|
||||
|
||||
$helper->log('Add data (begin)');
|
||||
$t = microtime(true);
|
||||
for ($col = 1; $col <= 50; ++$col) {
|
||||
for ($row = 0; $row < 100; ++$row) {
|
||||
$str = ($row + $col);
|
||||
$style = $styles[$row % 10];
|
||||
$coord = Coordinate::stringFromColumnIndex($col) . ($row + 1);
|
||||
$worksheet->setCellValue($coord, $str);
|
||||
$worksheet->duplicateStyle($style, $coord);
|
||||
}
|
||||
}
|
||||
$d = microtime(true) - $t;
|
||||
$helper->log('Add data (end) . time: ' . (string) round($d, 2) . ' s');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
|
||||
// Set password against the spreadsheet file
|
||||
$spreadsheet->getSecurity()->setLockWindows(true);
|
||||
$spreadsheet->getSecurity()->setLockStructure(true);
|
||||
$spreadsheet->getSecurity()->setWorkbookPassword('secret');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,98 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Html as HtmlHelper;
|
||||
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');
|
||||
|
||||
$html1 = '<font color="#0000ff">
|
||||
<h1 align="center">My very first example of rich text<br />generated from html markup</h1>
|
||||
<p>
|
||||
<font size="14" COLOR="rgb(0,255,128)">
|
||||
<b>This block</b> contains an <i>italicized</i> word;
|
||||
while this block uses an <u>underline</u>.
|
||||
</font>
|
||||
</p>
|
||||
<p align="right"><font size="9" color="red" face="Times New Roman, serif">
|
||||
I want to eat <ins><del>healthy food</del> <strong>pizza</strong></ins>.
|
||||
</font>
|
||||
';
|
||||
|
||||
$html2 = '<p>
|
||||
<font color="#ff0000">
|
||||
100°C is a hot temperature
|
||||
</font>
|
||||
<br>
|
||||
<font color="#0080ff">
|
||||
10°F is cold
|
||||
</font>
|
||||
</p>';
|
||||
|
||||
$html3 = '2<sup>3</sup> equals 8';
|
||||
|
||||
$html4 = 'H<sub>2</sub>SO<sub>4</sub> is the chemical formula for Sulphuric acid';
|
||||
|
||||
$html5 = '<strong>bold</strong>, <em>italic</em>, <strong><em>bold+italic</em></strong>';
|
||||
|
||||
$wizard = new HtmlHelper();
|
||||
$richText = $wizard->toRichTextObject($html1);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A1', $richText);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getColumnDimension('A')
|
||||
->setWidth(48);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getRowDimension(1)
|
||||
->setRowHeight(-1);
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1')
|
||||
->getAlignment()
|
||||
->setWrapText(true);
|
||||
|
||||
$richText = $wizard->toRichTextObject($html2);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A2', $richText);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getRowDimension(1)
|
||||
->setRowHeight(-1);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('A2')
|
||||
->getAlignment()
|
||||
->setWrapText(true);
|
||||
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A3', $wizard->toRichTextObject($html3));
|
||||
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A4', $wizard->toRichTextObject($html4));
|
||||
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A5', $wizard->toRichTextObject($html5));
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setTitle('Rich Text Examples');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$helper->log('Load MergeBook1 from Xlsx file');
|
||||
$filename1 = __DIR__ . '/../templates/43mergeBook1.xlsx';
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet1 = IOFactory::load($filename1);
|
||||
$helper->logRead('Xlsx', $filename1, $callStartTime);
|
||||
|
||||
$helper->log('Load MergeBook2 from Xlsx file');
|
||||
$filename2 = __DIR__ . '/../templates/43mergeBook2.xlsx';
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet2 = IOFactory::load($filename2);
|
||||
$helper->logRead('Xlsx', $filename2, $callStartTime);
|
||||
|
||||
foreach ($spreadsheet2->getSheetNames() as $sheetName) {
|
||||
$sheet = $spreadsheet2->getSheetByName($sheetName);
|
||||
if ($sheet === null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$sheet->setTitle($sheet->getTitle() . ' copied');
|
||||
$spreadsheet1->addExternalSheet($sheet);
|
||||
}
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet1, __FILE__);
|
||||
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create temporary file that will be read
|
||||
$sampleSpreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
$filename = $helper->getTemporaryFilename();
|
||||
$writer = new Writer($sampleSpreadsheet);
|
||||
$writer->save($filename);
|
||||
|
||||
$inputFileType = IOFactory::identify($filename);
|
||||
$reader = new Reader();
|
||||
$sheetList = $reader->listWorksheetNames($filename);
|
||||
$sheetInfo = $reader->listWorksheetInfo($filename);
|
||||
|
||||
$helper->log('File Type:');
|
||||
var_dump($inputFileType);
|
||||
|
||||
$helper->log('Worksheet Names:');
|
||||
var_dump($sheetList);
|
||||
|
||||
$helper->log('Worksheet Names:');
|
||||
var_dump($sheetInfo);
|
||||
|
||||
unlink($filename);
|
||||
@@ -1,71 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Sample;
|
||||
use PhpOffice\PhpSpreadsheet\Settings;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$helper = new Sample();
|
||||
if ($helper->isCli()) {
|
||||
$helper->log('This example should only be run from a Web Browser' . PHP_EOL);
|
||||
|
||||
return;
|
||||
}
|
||||
?>
|
||||
<form action="45_Quadratic_equation_solver.php" method="POST">
|
||||
Enter the coefficients for the Ax<sup>2</sup> + Bx + C = 0
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td>
|
||||
<b>A </b>
|
||||
</td>
|
||||
<td>
|
||||
<input name="A" type="text" size="8" value="<?php echo (isset($_POST['A'])) ? htmlentities($_POST['A'], Settings::htmlEntityFlags()) : ''; ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>B </b>
|
||||
</td>
|
||||
<td>
|
||||
<input name="B" type="text" size="8" value="<?php echo (isset($_POST['B'])) ? htmlentities($_POST['B'], Settings::htmlEntityFlags()) : ''; ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>C </b>
|
||||
</td>
|
||||
<td>
|
||||
<input name="C" type="text" size="8" value="<?php echo (isset($_POST['C'])) ? htmlentities($_POST['C'], Settings::htmlEntityFlags()) : ''; ?>">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<input name="submit" type="submit" value="calculate"><br />
|
||||
If A=0, the equation is not quadratic.
|
||||
</form>
|
||||
|
||||
<?php
|
||||
/** If the user has submitted the form, then we need to execute a calculation * */
|
||||
if (isset($_POST['submit'])) {
|
||||
if ($_POST['A'] == 0) {
|
||||
$helper->log('The equation is not quadratic');
|
||||
} else {
|
||||
// Calculate and Display the results
|
||||
$helper->log('<hr /><b>Roots:</b><br />');
|
||||
|
||||
$discriminantFormula = '=POWER(' . $_POST['B'] . ',2) - (4 * ' . $_POST['A'] . ' * ' . $_POST['C'] . ')';
|
||||
$discriminant = Calculation::getInstance()->calculateFormula($discriminantFormula);
|
||||
|
||||
$r1Formula = '=IMDIV(IMSUM(-' . $_POST['B'] . ',IMSQRT(' . $discriminant . ')),2 * ' . $_POST['A'] . ')';
|
||||
$r2Formula = '=IF(' . $discriminant . '=0,"Only one root",IMDIV(IMSUB(-' . $_POST['B'] . ',IMSQRT(' . $discriminant . ')),2 * ' . $_POST['A'] . '))';
|
||||
|
||||
/** @var string */
|
||||
$output = Calculation::getInstance()->calculateFormula($r1Formula);
|
||||
$helper->log("$output");
|
||||
/** @var string */
|
||||
$output = Calculation::getInstance()->calculateFormula($r2Formula);
|
||||
$helper->log("$output");
|
||||
$callEndTime = microtime(true);
|
||||
$helper->logEndingNotes();
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
// Turn off error reporting
|
||||
error_reporting(0);
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$html = __DIR__ . '/../templates/46readHtml.html';
|
||||
$callStartTime = microtime(true);
|
||||
|
||||
$objReader = IOFactory::createReader('Html');
|
||||
$objPHPExcel = $objReader->load($html);
|
||||
|
||||
$helper->logRead('Html', $html, $callStartTime);
|
||||
|
||||
// Save
|
||||
$helper->write($objPHPExcel, __FILE__);
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xls;
|
||||
|
||||
$helper->log('Read spreadsheet');
|
||||
$reader = new Xls();
|
||||
$spreadsheet = $reader->load(__DIR__ . '/../templates/47_xlsfill.xls');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__, ['Xls']);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
|
||||
|
||||
$helper->log('Read spreadsheet');
|
||||
$reader = new Xlsx();
|
||||
$spreadsheet = $reader->load(__DIR__ . '/../templates/47_xlsxfill.xlsx');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__, ['Xlsx']);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
@@ -1,78 +0,0 @@
|
||||
<?php
|
||||
|
||||
// Create new Spreadsheet object
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Dimension;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->getCell('A1')->setValue('twocell');
|
||||
$sheet->getCell('A2')->setValue('twocell');
|
||||
$sheet->getCell('A3')->setValue('onecell');
|
||||
$sheet->getCell('A6')->setValue('absolute');
|
||||
|
||||
// Add a drawing to the worksheet
|
||||
$helper->log('Add a drawing to the worksheet two-cell anchor not resized');
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('PhpSpreadsheet');
|
||||
$drawing->setDescription('PhpSpreadsheet');
|
||||
$drawing->setPath(__DIR__ . '/../images/PhpSpreadsheet_logo.png');
|
||||
// anchor type will be two-cell because Coordinates2 is set
|
||||
//$drawing->setAnchorType(Drawing::ANCHORTYPE_TWOCELL);
|
||||
$drawing->setCoordinates('B1');
|
||||
$drawing->setCoordinates2('B1');
|
||||
$drawing->setOffsetX2($drawing->getImageWidth());
|
||||
$drawing->setOffsetY2($drawing->getImageHeight());
|
||||
$drawing->setWorksheet($spreadsheet->getActiveSheet());
|
||||
|
||||
// Add a drawing to the worksheet
|
||||
$helper->log('Add a drawing to the worksheet two-cell anchor resized');
|
||||
$drawing2 = new Drawing();
|
||||
$drawing2->setName('PhpSpreadsheet');
|
||||
$drawing2->setDescription('PhpSpreadsheet');
|
||||
$drawing2->setPath(__DIR__ . '/../images/PhpSpreadsheet_logo.png');
|
||||
// anchor type will be two-cell because Coordinates2 is set
|
||||
//$drawing->setAnchorType(Drawing::ANCHORTYPE_TWOCELL);
|
||||
$drawing2->setCoordinates('C2');
|
||||
$drawing2->setCoordinates2('C2');
|
||||
$drawing2->setOffsetX2($drawing->getImageWidth());
|
||||
$drawing2->setOffsetY2($drawing->getImageHeight());
|
||||
$drawing2->setWorksheet($spreadsheet->getActiveSheet());
|
||||
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth($drawing->getImageWidth(), Dimension::UOM_PIXELS);
|
||||
$spreadsheet->getActiveSheet()->getRowDimension(2)->setRowHeight($drawing->getImageHeight(), Dimension::UOM_PIXELS);
|
||||
|
||||
// Add a drawing to the worksheet one cell anchor
|
||||
$helper->log('Add a drawing to the worksheet one-cell anchor');
|
||||
$drawing3 = new Drawing();
|
||||
$drawing3->setName('PhpSpreadsheet');
|
||||
$drawing3->setDescription('PhpSpreadsheet');
|
||||
$drawing3->setPath(__DIR__ . '/../images/PhpSpreadsheet_logo.png');
|
||||
// anchor type will be one-cell because Coordinates2 is not set
|
||||
//$drawing->setAnchorType(Drawing::ANCHORTYPE_ONECELL);
|
||||
$drawing3->setCoordinates('D3');
|
||||
$drawing3->setWorksheet($spreadsheet->getActiveSheet());
|
||||
|
||||
// Add a drawing to the worksheet
|
||||
$helper->log('Add a drawing to the worksheet two-cell anchor resized absolute');
|
||||
$drawing4 = new Drawing();
|
||||
$drawing4->setName('PhpSpreadsheet');
|
||||
$drawing4->setDescription('PhpSpreadsheet');
|
||||
$drawing4->setPath(__DIR__ . '/../images/PhpSpreadsheet_logo.png');
|
||||
// anchor type will be two-cell because Coordinates2 is set
|
||||
//$drawing->setAnchorType(Drawing::ANCHORTYPE_TWOCELL);
|
||||
$drawing4->setCoordinates('C6');
|
||||
$drawing4->setCoordinates2('C6');
|
||||
$drawing4->setOffsetX2($drawing->getImageWidth());
|
||||
$drawing4->setOffsetY2($drawing->getImageHeight());
|
||||
$drawing4->setWorksheet($spreadsheet->getActiveSheet());
|
||||
$drawing4->setEditAs(Drawing::EDIT_AS_ABSOLUTE);
|
||||
|
||||
//$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth($drawing->getImageWidth(), Dimension::UOM_PIXELS);
|
||||
$spreadsheet->getActiveSheet()->getRowDimension(6)->setRowHeight($drawing->getImageHeight(), Dimension::UOM_PIXELS);
|
||||
|
||||
$helper->write($spreadsheet, __FILE__, ['Xlsx']);
|
||||
@@ -1,80 +0,0 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$spreadsheet->getProperties()->setTitle('Alignment');
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$hi = 'Hi There';
|
||||
$ju = 'This is a longer than normal sentence';
|
||||
$sheet->fromArray([
|
||||
['', 'default', 'bottom', 'top', 'center', 'justify', 'distributed'],
|
||||
['default', $hi, $hi, $hi, $hi, $hi, $hi],
|
||||
['left', $hi, $hi, $hi, $hi, $hi, $hi],
|
||||
['right', $hi, $hi, $hi, $hi, $hi, $hi],
|
||||
['center', $hi, $hi, $hi, $hi, $hi, $hi],
|
||||
['justify', $ju, $ju, $ju, $ju, $ju, $ju],
|
||||
['distributed', $ju, $ju, $ju, $ju, $ju, $ju],
|
||||
]);
|
||||
$sheet->getColumnDimension('B')->setWidth(20);
|
||||
$sheet->getColumnDimension('C')->setWidth(20);
|
||||
$sheet->getColumnDimension('D')->setWidth(20);
|
||||
$sheet->getColumnDimension('E')->setWidth(20);
|
||||
$sheet->getColumnDimension('F')->setWidth(20);
|
||||
$sheet->getColumnDimension('G')->setWidth(20);
|
||||
$sheet->getRowDimension(2)->setRowHeight(30);
|
||||
$sheet->getRowDimension(3)->setRowHeight(30);
|
||||
$sheet->getRowDimension(4)->setRowHeight(30);
|
||||
$sheet->getRowDimension(5)->setRowHeight(30);
|
||||
$sheet->getRowDimension(6)->setRowHeight(40);
|
||||
$sheet->getRowDimension(7)->setRowHeight(40);
|
||||
$minRow = 2;
|
||||
$maxRow = 7;
|
||||
$minCol = 'B';
|
||||
$maxCol = 'g';
|
||||
$sheet->getStyle("C$minRow:C$maxRow")
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_BOTTOM);
|
||||
$sheet->getStyle("D$minRow:D$maxRow")
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_TOP);
|
||||
$sheet->getStyle("E$minRow:E$maxRow")
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_CENTER);
|
||||
$sheet->getStyle("F$minRow:F$maxRow")
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_JUSTIFY);
|
||||
$sheet->getStyle("G$minRow:G$maxRow")
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_DISTRIBUTED);
|
||||
$sheet->getStyle("{$minCol}3:{$maxCol}3")
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_LEFT);
|
||||
$sheet->getStyle("{$minCol}4:{$maxCol}4")
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_RIGHT);
|
||||
$sheet->getStyle("{$minCol}5:{$maxCol}5")
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||||
$sheet->getStyle("{$minCol}6:{$maxCol}6")
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_JUSTIFY);
|
||||
$sheet->getStyle("{$minCol}7:{$maxCol}7")
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_DISTRIBUTED);
|
||||
|
||||
$sheet->getCell('A9')->setValue('Center Continuous A9-C9');
|
||||
$sheet->getStyle('A9:C9')
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_CENTER_CONTINUOUS);
|
||||
$sheet->getCell('A10')->setValue('Fill');
|
||||
$sheet->getStyle('A10')
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_FILL);
|
||||
$sheet->setSelectedCells('A1');
|
||||
|
||||
$helper->write($spreadsheet, __FILE__, ['Xlsx', 'Html', 'Xls']);
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xls;
|
||||
|
||||
$helper->log('Read spreadsheet');
|
||||
$reader = new Xls();
|
||||
$spreadsheet = $reader->load(__DIR__ . '/../templates/50_xlsverticalbreak.xls');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__, ['Xls']);
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
@@ -1,54 +0,0 @@
|
||||
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
|
||||
@@ -1,44 +0,0 @@
|
||||
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
|
||||
@@ -1,47 +0,0 @@
|
||||
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
|
||||
@@ -1,23 +0,0 @@
|
||||
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
|
||||
@@ -1,14 +0,0 @@
|
||||
Australia
|
||||
Fiji
|
||||
Kiribati
|
||||
Marshall Islands
|
||||
Micronesia
|
||||
Nauru
|
||||
New Zealand
|
||||
Palau
|
||||
Papua New Guinea
|
||||
Samoa
|
||||
Solomon Islands
|
||||
Tonga
|
||||
Tuvalu
|
||||
Vanuatu
|
||||
@@ -1,12 +0,0 @@
|
||||
Argentina
|
||||
Bolivia
|
||||
Brazil
|
||||
Chile
|
||||
Colombia
|
||||
Ecuador
|
||||
Guyana
|
||||
Paraguay
|
||||
Peru
|
||||
Suriname
|
||||
Uruguay
|
||||
Venezuela
|
||||
Reference in New Issue
Block a user