myclabs / xport
PHP 导入/导出库
0.2.2
2014-02-13 09:03 UTC
Requires
- php: >=5.4.0
- mnapoli/metamodel: dev-master
- phpoffice/phpexcel: 1.7.*
- symfony/property-access: 2.*
- symfony/yaml: 2.*
- twig/twig: 1.*
Requires (Dev)
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-09 14:14:20 UTC
README
Xport 是一个用于 PHP 的导入/导出库。
它旨在支持以下格式
- Excel (xlsx 和 xls)
- OpenOffice (ods - 待实现)
- PDF (待实现)
- XML (待实现)
它为不同的格式(电子表格、文档、XML 等)提供对象模型,以及基于 YAML 和 Twig 的语言来映射您的数据(数组、对象等)到模型。
电子表格
简单示例
简单映射文件(YAML 文件)
sheets: # An empty sheet named "Home" - label: "Home" # Another sheet named "Contacts" - label: "Contacts" content: # Containing one table with 2 columns - type: VerticalTable columns: - "Name" - "Phone Number" lines: - foreach: "contacts as contact" do : - cells: - "{{ contact.name }}" - "{{ contact.phoneNumber }}"
使用方法
$modelBuilder = new SpreadsheetModelBuilder(); $export = new PHPExcelExporter(); $modelBuilder->bind('contacts', $contacts); $export->export($modelBuilder->build('mapping.yml'), 'myFile.xslx');
该表将用数组 $contacts
中的每个项目填充。
path
配置是一个 PropertyAccess 路径,例如,contact.phoneNumber
路径可以解析为 $contact->getPhoneNumber()
或 $contact->phoneNumber
。
动态示例
您可以使用 foreach
表达式生成动态内容。
您还可以使用 Twig 模板语言。
以下是一个示例
# Create one sheet per company sheets: - foreach: companies as i => company do: - label: "{{ i + 1 }} - {{ company.name }}" # Twig expression, will result in (for example): "1 - My Company"
$modelBuilder = new SpreadsheetModelBuilder(); $export = new PHPExcelExporter(); $modelBuilder->bind('companies', $companies); $export->export($modelBuilder->build(new YamlMappingReader('mapping.yml')), 'myFile.xslx');
以下是一个更完整的示例
sheets: # Create one sheet per company - foreach: companies as company do: - label: "{{ company.name }}" content: # One content(VerticalTable) per product, each, followed by an empty line - foreach: company.products as product do: - type: VerticalTable label: product.label columns: - "Product" - "Price" - "Salesman" # One line per sale, each, preceded by an empty line lines: - foreach: product.getSalesList() as sale do: - - cells: - "{{ product.name }}" - "{{ sale.price }}" - "{{ sale.salesman.name }}" - type: EmptyLine
函数
函数可以在 Twig 表达式中使用,并且是这样定义的
$modelBuilder = new SpreadsheetModelBuilder(); $export = new PHPExcelExporter(); $modelBuilder->bindFunction('up', function($str) { return strtoupper($str); }); $export->export($modelBuilder->build(new YamlMappingReader('mapping.yml')), 'myFile.xslx');
文件格式
您可以通过 PHPExcel 编写器选择要使用的文件格式
// ... $export->export($spreadsheet, 'myFile.xslx', new PHPExcel_Writer_Excel2007());
可用的编写器
- Excel 2007 (.xlsx):
PHPExcel_Writer_Excel2007
- Excel 经典 (.xls):
PHPExcel_Writer_Excel5
- CSV (.csv):
PHPExcel_Writer_CSV