waCSV

Загрузка и обработка CSV-файлов

Содержание...

Порядок использования класса:

  1. В контроллере обработки POST-запроса для загрузки CSV-файла создать экземпляр класса waCSV. Загружаемый CSV-файл должен быть доступен в массиве $_FILES.
  2. С помощью метода upload() загрузить файл в директорию для временных файлов.
  3. С помощью метода getInfo() получить информацию о структуре файла: заголовки, содержимое и количество столбцов.
  4. С помощью метода setFields() выбрать столбцы, содержимое которых нужно получить.
  5. С помощью метода import() получить содержимое выбранных столбцов.

Методы

  • getDelimiters

    Возвращает список разделителей, используемых в CSV-файлах.

  • getFields

    Возвращает массив столбцов, указанный с помощью метода setFields(), значения которых нужно получить.

  • getInfo

    Возвращает сводную информацию о CSV-файле.

  • import

    Возвращает содержимое столбцов CSV-файла.

  • saveContent

    Сохраняет текстовое содержимое в CSV-файл.

  • setEncoding

    Устанавливает кодировку символов для чтения файла.

  • setFields

    Устанавливает список столбцов CSV-файла, из которых нужно извлечь данные.

  • setFile

    Устанавливает имя CSV-файла в директории со временными файлами, из которого нужно извлечь данные.

  • upload

    Загружает CSV-файл на сервер.

public static function getDelimiters()

Возвращает список разделителей, используемых в CSV-файлах.

Пример

waCSV::getDelimiters()

Результат

array(
  0 => array(
    0 => ',',
    1 => 'Запятая',
  ),
  1 => array(
    0 => ';',
    1 => 'Точка с запятой',
  ),
  2 => array(
    0 => '	',
    1 => 'Табуляция',
  ),
)

public function getFields()

Возвращает массив столбцов, указанный с помощью метода setFields(), значения которых нужно получить.

Пример

$csv = new waCSV();
$csv->setFields(array(
    0 => 'Наименование',
    3 => 'Валюта',
));
$fields = $csv->getFields();

Результат

array(
    0 => 'Наименование',
    3 => 'Валюта',
)

public function getInfo()

Возвращает сводную информацию о CSV-файле: используемый разделитель, кодировка символов, заголовки, содержимое и количество столбцов.

Пример

$csv = new waCSV(false, ';');
$csv->upload('csv');
$info = $csv->getInfo();

Результат

array(
    'delimiter' => ';',
    'encode' => false,
    'fields' => array(
        0 => 'Наименование',
        1 => 'Описание',
        2 => 'Цена',
        3 => 'Валюта',
    ),
    'records' => array(
        0 => array(
            0 => '...',
            1 => '...',
            2 => '...',
            3 => '...',
        ),
        1 => array(
            0 => '...',
            1 => '...',
            2 => '...',
            3 => '...',
        ),
        ...
    ),
    'count' => 38,
)

public function import ($limit = 50)

Возвращает содержимое столбцов CSV-файла, указанных в поле fields с помощью метода setFields(). Если поле fields пустое, метод возвращает содержимое всех столбцов файла.

Параметры

  • $limit

    Количество строк файла, из которых нужно считать значения столбцов. Ограничение по умолчанию — 50.

Пример

$csv = new waCSV();
$csv->upload('csv');
$csv->setFields(array(
    0 => 'Наименование',
    2 => 'Цена',
    3 => 'Валюта',
));
$data = $csv->import();

Результат

array(
  1 => array(
    'Наименование' => 'Товар 1',
    'Цена' => '699',
    'Валюта' => 'RUB',
  ),
  2 => array(
    'Наименование' => 'Товар 2',
    'Цена' => '799',
    'Валюта' => 'RUB',
  ),
  ...
)

public function saveContent ($content)

Сохраняет текстовое содержимое в CSV-файл. Удобно для импорта данных из содержимого, сформированного как CSV-файл, но полученного не из файла, а из другого источника, например, из POST-запроса.

Параметры

  • $content

    Текстовое содержимое для сохранения в CSV-файл.

Пример

$csv = new waCSV();
$csv_content = waRequest::post('csv');
$csv->saveContent($csv_content);
$data = $csv->import();

public function setEncoding ($encoding)

Устанавливает кодировку символов для чтения файла. По умолчанию для чтения CSV-файлов используется кодировка UTF-8. Если файл сохранен в другой кодировке, перед извлечением содержимого нужно установить его кодировку.

Параметры

  • $encoding

    Обозначение кодировки символов.

Пример

$csv = new waCSV();
$csv->setEncoding('windows-1251');

public function setFields ($fields)

Устанавливает список столбцов CSV-файла, из которых нужно извлечь данные с помощью метода import().

Параметры

  • $fields

    Ассоциативный массив столбцов: ключ — порядковый номер столбца начиная с 0, значение — заголовок столбца из первой строки CSV-файла.

Пример

$csv = new waCSV();
$csv->upload('csv');
$csv->setFields(array(
    0 => 'Наименование',
    2 => 'Цена',
    3 => 'Валюта',
));
$data = $csv->import();

public function setFile ($file)

Устанавливает имя CSV-файла в директории со временными файлами, из которого нужно извлечь данные. Удобно использовать для поочередных операций с несколькими CSV-файлами.

Параметры

  • $file

    Имя CSV-файла в директории для временных файлов.

Пример

$csv = new waCSV();
$post_csv = waRequest::post('csv');
$uploaded_as_text = $csv->saveContent($post_csv);
$uploaded_as_file = csv->upload('csv');

$csv->setFile($uploaded_as_text);
$data_from_text = $csv->import();

$csv->setFile($uploaded_as_file);
$data_from_file = $csv->import();

public function upload ($name)

Загружает CSV-файл на сервер.

Параметры

  • $name

    Значение атрибута name поля типа file веб-формы, через которую загружается CSV-файл.

Пример

$csv = new waCSV();
csv->upload('csv');