mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-10-06 20:09:01 +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:
@@ -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__);
|
||||
@@ -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();
|
||||
@@ -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__);
|
||||
@@ -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__);
|
||||
@@ -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']);
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user