xp-framework / csv
包含 XP 框架的 CSV API
v11.1.0
2024-03-24 11:45 UTC
Requires
- php: >=7.0.0
- xp-framework/core: ^12.0 | ^11.0 | ^10.0
Requires (Dev)
- xp-framework/test: ^2.0 | ^1.0
README
包含 XP 框架的 CSV API
阅读
CSV 数据可以从任何输入流、读取器或通道中读取
use util\cmd\Console; use text\csv\CsvListReader; use io\streams\FileInputStream; $csv= new CsvListReader(new FileInputStream('in.csv')); Console::writeLine($csv->getHeaders()); while ($record= $csv->read()) { Console::writeLine('- ', $record); } $csv->close();
写入
CSV 数据可以写入任何输出流、写入器或通道
use util\cmd\Console; use text\csv\CsvListWriter; use io\streams\FileOutputStream; $csv= new CsvListWriter(new FileOutputStream('out.csv')); $csv->setHeader(['name', 'city', 'zip']); $csv->write(['Timm', 'Karlsruhe', 76137]); $csv->write(['Alex', 'Karlsruhe', 76131]); $csv->close();
字符集转换
通过传递带有指定字符集的 TextReader 或 TextWriter 实例来完成字符集解码
use text\csv\{CsvListReader, CsvListWriter}; use io\streams\{FileInputStream, FileOutputStream, TextReader, TextWriter}; // Read from in.csv, which is in cp1252 $in= new CsvListReader(new TextReader(new FileInputStream('in.csv'), 'cp1252')); // Write to out.csv, converting everything to cp1252 $out= new CsvListWriter(new TextWriter(new FileOutputStream('out.csv'), 'cp1252'));
格式
CSV 文件通常使用分号来分隔值。根据我们解析的文件,这可能是一个不同的字符。读取器和写入器都接受一个可选的第二个参数,可以通过它来更改格式。
use text\csv\{CsvFormat, CsvListReader, CsvListWriter}; $format= (new CsvFormat())->withDelimiter(','); $format= CsvFormat::$COMMAS; // Short-hand for the above $writer= new CsvListWriter(..., $format); $reader= new CsvListReader(..., $format);