2013-08-23 2 views
0

Я использую класс SimpleExcel для разбора CSV-файла в php.In этот файл csv имеет данные bluk с запятой, пробелами и вводит, когда класс анализирует файл csv и создает объект, который он извлекает неверный массив (одна строка разделена на более одной строки)SimpleExcel class not Parsing csv file correct

$excel = new SimpleExcel('CSV'); 
$excel->parser->loadFile($fileName, 'CSV'); 
for ($i = 1; $i < $read; $i++) 
{ 
    $this->object[] = $excel->parser->getRow($i); 
} 

'$ this-> объект' объект возвращать неверный массив образец CSV:

  • Стандарт, Lorem Ipsum проход, используемый с 1500s
  • стандарт, Lorem, Ipsum, прохождение, используется, так как, то, 1500s

Blockquote

[28] => Array 
    (
     [0] => the 
     [1] => standard 
     [2] => Lorem 
     [3] => Ipsum 

    ) 

[29] => Array 
    (
     [0] => passage 
     [1] => used since the 1500s 
     [2] => 
     [3] => 

    ) 

29 массив имеет содержать значение 28 array.actually это один массив, который разделен в двух различных массив

I want array like that 
[28] => Array 
    (
     [0] => The standard 
     [1] => Lorem Ipsum passage 
     [2] => used since the 1500s 
    ) 

[29] => Array 
    (
     [0] => The standard 
     [1] => Lorem Ipsum 
     [2] => passage 
     [3] => used since the 1500s 
    ) 
+0

ли какая-либо из записей в формате CSV есть символ новой строки? Покажите соответствующую часть файла CSV, который у вас есть, и что вы ожидаете увидеть в массиве –

+0

@MarkBaker я обновил свой вопрос –

ответ

0

Попробуйте

$excel->parser->loadFile(
    $fileName, 
    'CSV', 
    array(
     'delimiter' => ',' 
    ) 
); 

принудительное использование разделителя запятой;

или исправить код библиотеки:

линии 78 CSVParser следует читать:

$args = str_getcsv($line, $sep); 

вместо

$args = str_getcsv($sep, $line); 
+0

вышеупомянутые изменения не работают, их же проблема, пожалуйста, дайте другое решение. У меня есть объемные данные в CSV-файле, которые содержат длинную строку, одна ячейка имеет длинную строку, включая запятую, и вводит .when библиотека читает эту ячейку, она разделяет эту ячейку на несколько ячеек, это проблема. Я хочу, чтобы одна ячейка была одной ячейкой не библиотечный chnage в несколько ячеек –

+0

Я уже сказал вам, в чем проблема, и исправил одну ошибку для вас в этой библиотеке ... но я бы предложил, если это не поможет, возможно, вам лучше использовать стандартный fgetcsv(), чтобы прочитать файл –

+0

, есть 3 ячейки в файле CSV: cell1 cell2 cell3 вот так у меня много информации в файле csv, в этой ячейке файла 3 есть длинные строки, где некоторая строка save с enter '/ р'. Строка № 58 CSVParse использовала $ pattern = "/ \ r \ n \ \ n \ r /"; , когда эта библиотека читает cell3 и обнаруживает enter '/ r', она создает новую строку (объект). я хочу, чтобы он игнорировал ввод '/ r' в cell3. После того, как прочитал полный cell3, тогда он перейдет к следующей строке. У меня нет возможности использовать другую library.please, дайте мне решение как можно скорее. –