jhesyong / simple-excel-parser
基于 phpoffice/phpexcel 的简单 Excel 解析器
v1.0
2015-03-14 13:23 UTC
Requires
- php: >=5.4.0
- phpoffice/phpexcel: 1.8.0
This package is not auto-updated.
Last update: 2024-09-28 17:38:22 UTC
README
一个简单的 Excel 解析器,将每一行解析为关联数组。
何时使用此工具?
- 您的 Excel 文件的第一行包含标题,其余行包含数据。
- 您希望将标题映射到数据库键。
- 您希望将数据值映射到数据库枚举。
示例
您希望解析具有以下格式的 Excel 文件。
并且您希望将标题映射到数据库表字段,并将性别映射到 'm'
或 'f'
。
$parser = new Jhesyong\Excel\Parser;
// Map 'Name' to 'name', 'Age' to 'age', and 'Gender' to 'gender'.
$parser->addHeader('Name', 'name');
$parser->addHeader('Age', 'age');
// Map the values: 'm' is for 'Male', and 'f' is for 'Female'
$parser->addHeader('Gender', 'gender')->withOptions(['m' => 'Male', 'f' => 'Female']);
// You can use a regular expression and pass a callback to map multiple header titles.
// In this case, 'Phone 1' will be mapped to 'phone_1'
$parser->addHeader('/^Phone \d+$/', function($title)
{
return str_replace(' ', '_', strtolower($title));
});
// Load the file and start to parse. Pass a callback function
// and it will be called for each row.
$parser->loadFile('filename.xlsx')->parse(function($data)
{
// Data will be an associative array.
var_dump($data);
});
常见问题解答 (FAQ)
我有多个相同文本的标题,但我想将它们映射到不同的数据库表字段。
您可以在期望的顺序中添加具有相同标题但不同字段名的标题。
// The first 'Phone' will be mapped to 'phone_1',
// and the second 'Phone' will be mapped to 'phone_2'
$parser->addHeader('Phone', 'phone_1');
$parser->addHeader('Phone', 'phone_2');
我只是想使用标题作为字段名
您可以选择省略第二个参数。
// 'Phone' will be mapped to 'Phone'
$parser->addHeader('Phone');
我想预先定义标题映射和选项。
您可以通过扩展 Parser
并在构造函数中编写您的规则来实现。