Простейший способ чтения csv-файла с использованием php

Какой был бы самый простой способ прочитать csv-файл, используя php

Вот код, проблема здесь, он читает все в одной строке

$row = 1; if (($handle = fopen("1.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num fields in line $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } 

Спасибо, Жан

[редактировать]

Извинения, да, я хочу прочитать файл csv

Solutions Collecting From Web of "Простейший способ чтения csv-файла с использованием php"

Edit: Мне кажется, что вы хотите читать файлы CSV.

alt text

Ниже приведен пример работы с таблицей:

$ file_handle = fopen ("widgets.csv", "r");

while (! feof ($ file_handle)) {

$ line_of_text = fgetcsv ($ file_handle, 1024);

print $ line_of_text [0]. $ Line_of_text [1]. $ line_of_text [2]. "<BR>";

}

fclose ($ file_handle);

Но если вы действительно хотите читать файлы в формате Excel. xlsx , вы можете использовать библиотеку PHPExcel. http://phpexcel.codeplex.com/

Чтение таблицы :

$ objReader = new PHPExcel_Reader_Excel2007 ();

$ objPHPExcel = $ objReader-> load ("05featuredemo.xlsx");

Установить свойства

echo date ('H: i: s'). Msgstr "Установить свойства \ n";

$ objPHPExcel-> getProperties () -> setCreator ("Maarten Balliauw");

$ objPHPExcel-> getProperties () -> setLastModifiedBy («Maarten Balliauw»);

$ objPHPExcel-> getProperties () -> setTitle («тестовый документ XLSX Office 2007»);

$ objPHPExcel-> getProperties () -> setSubject («тестовый документ XLSX Office 2007»);

$ objPHPExcel-> getProperties () -> setDescription («Тестируемый документ для Office 2007 XLSX, сгенерированный с использованием классов PHP»);

Добавить некоторые данные

echo date ('H: i: s'). Msgstr "Добавить некоторые данные \ n";

$ ObjPHPExcel-> setActiveSheetIndex (0);

$ objPHPExcel-> getActiveSheet () -> SetCellValue ('A1', 'Hello');

$ objPHPExcel-> getActiveSheet () -> SetCellValue ('B2', 'world!');

$ objPHPExcel-> getActiveSheet () -> SetCellValue ('C1', 'Hello');

$ objPHPExcel-> getActiveSheet () -> SetCellValue ('D2', 'world!');

Переименовать лист

echo date ('H: i: s'). «Переименовать лист \ n»;

$ ObjPHPExcel-> getActiveSheet () -> SETTITLE ( 'Simple');

Сохранить файл Excel 2007

echo date ('H: i: s'). «Запись в формат Excel2007 \ n»;

$ objWriter = новый PHPExcel_Writer_Excel2007 ($ objPHPExcel);

$ objWriter-> save (str_replace ('. php', '.xlsx', FILE ));

Только чтение конкретных листов

Вы можете установить параметр setLoadSheetsOnly на читателя, чтобы проинструктировать читателя только загружать листы с заданным именем:

$ objReader = new PHPExcel_Reader_Excel2007 ();

$ objReader-> setLoadSheetsOnly (массив («Лист 1», «Мой специальный лист»));

$ objPHPExcel = $ objReader-> load ("05featuredemo.xlsx");

Это оно!

Дополнительная информация и документы:

http://phpexcel.codeplex.com/

Вы можете попытаться удалить параметр «длина» или установить значение 0, особенно если у вас есть строка длиной более 1000 символов.

Если вы используете php под окнами, вы можете создать объект com.

$ excel_app = новый COM («Excel.application») или «Die» («Не подключался»);

Попробуйте PHP-ExcelReader . Я никогда не использовал его, но он утверждает, что это кросс-платформа.

Вы не указываете, какую версию Excel; но посмотрите на PHPExcel (который может читать форматы BIFF5-8 и редкий формат Excel2003 XML, а также более свежий стандарт OpenXML, представленный в Excel2007). Это чистый PHP, поэтому он будет работать на любой платформе (не нужно .COM).

заявление о заинтересованности: я один из разработчиков.

Ниже приведен лучший рабочий пример:

 <?php ini_set('auto_detect_line_endings', TRUE); $header = ''; $rows = array_map('str_getcsv', file('ZE5C630852D4DB9AD75E5DE.csv')); $header = array_shift($rows); $csv = array(); foreach ($rows as $row) { $csv[] = $row; } /*echo "<pre>"; print_r($csv);*/ ?>