Какой был бы самый простой способ прочитать 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
Edit: Мне кажется, что вы хотите читать файлы CSV.
Ниже приведен пример работы с таблицей:
$ 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");
Это оно!
Дополнительная информация и документы:
Вы можете попытаться удалить параметр «длина» или установить значение 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);*/ ?>