idct/php-csv-writer

基于缓冲的 TextWriter 的 CsvWriter,支持 EOL。

1.0.5 2020-01-21 19:01 UTC

This package is auto-updated.

Last update: 2024-09-22 05:40:03 UTC


README

基于缓冲的 TextWriter 的基本 CsvWriter(也提供)。支持内存缓冲和正确处理 EOL 设置,这是使用原生的 fputcsv 函数难以实现的。

Tests status Coverage Status GitHub tag (latest SemVer)

本库的主要目的是提供一种面向对象的缓冲 CSV 文件写入方式。

安装

在您的项目中安装库的最佳方式是使用 Composer

composer require idct/php-csv-writer

当然,您仍然可以使用 using 语句手动将所有必需的文件包含到项目中,但强烈建议使用 Composer 和自动加载。

用法

创建实例

use IDCT\CsvWriter\CsvWriter;
$csvWriter = new CsvWriter();

现在您需要打开或创建一个文件,为此您有两种方法可用:openopenWithFieldsNames。要创建一个不添加标题的新文件,请使用

$csvWriter->open('filename.csv');

要打开一个带有标题的新文件,请传递一个数组作为第二个参数

$csvWriter->openWithFieldsNames('filename.csv', ["columnA", "columnB", "columnC"]);

当将新行(添加数据)写入使用字段名称打开的 CSV 文件时,将在每次尝试中验证列数。

可以通过传递 TextWriter::FILEMODE_APPEND 作为最后一个参数来追加到现有文件。

$csvWriter->open('filename.csv', CsvWriter::FILEMODE_APPEND);

$csvWriter->openWithFieldsNames('filename.csv', ["columnA", "columnB", "columnC"], CsvWriter::FILEMODE_APPEND);

警告:在追加模式下,行不会被添加到 CSV 文件的第一行,它们仅在写入操作期间用于验证列数。

缓冲

默认情况下,CsvWriter 禁用缓冲,您可以通过使用方法 setBufferSize 提供缓冲区大小(以字节为单位)来启用它。请确保您理解,数据实际上只有在缓冲区填满时才会保存到文件中,因此请确保使用 close 方法关闭文件或使用 flush 方法,在您想要有意将缓冲区刷新到文件而不关闭文件时。

EOL 支持

默认情况下,PHP 的内部 fputcsv 函数使用当前平台默认的 EOL 符号。idct/php-csv-writer 支持设置不同的 EOL 符号:将 CsvWriter::EOL_WINDOWSCsvWriter::EOL_LINUXCsvWriter::EOL_MACLEGACY(Mac 今天使用 LINUX EOL,这只是为了遗留支持)传递给 setEolSymbol 方法。警告:仅使用 NEXT 行使用 EOL 符号,之前的行(已在文件或缓冲区中存在)将保持不变。

TextWriter

CsvWriter 基于 TextWriter,可用于缓冲文本写入操作。除了上述方法外,它还为 writewriteln 操作提供了不同的行为,分别存储文本或写入文本后跟定义的 EOL 符号。要使用它,只需创建一个实例

$textWriter = new TextWriter();

TODO / 贡献

目前的主要要求是提供更好的单元测试和文档,但如果您发现任何错误或具有潜在的功能想法,请使用 Issues 或 Pull Requests,这非常受欢迎!我将尽快回复。