Конвертировать массив данных в Excel

1

Я преобразовываю данные массива в Excel с помощью PHPExcel. Когда файл Excel создается, данные хранятся в строке, но я хочу хранить столбцы данных. Мой массив приведен ниже:

array (size=3)
  0 => string '8801755568952' (length=13)
  1 => string '8801755556987' (length=13)
  2 => string '8801755587985' (length=13)

Мой массив в код преобразования Excel:

$objPHPExcel->getActiveSheet()->fromArray($csv_data, null, 'A1')  
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    return $objWriter->save($xls_output_path);

Мой выход:

8801755568952 8801755556987 8801755587985

Мой желаемый результат:

8801755568952 
8801755556987 
8801755587985
Теги:
excel
arrays

1 ответ

1
Лучший ответ

Если вы передадите простой одномерный массив fromArray(), PHPExcel предполагает, что это одна строка, что вы видите.

Либо преобразуйте массив в двумерный массив

Поскольку PHPExcel будет рассматривать эти значения как числовые, и они превышают предел для 32-разрядного целого числа со знаком в PHP (и вы, вероятно, используете 32-битный PHP), они будут отлиты для float, я могу потерять точность, поэтому я бы не использовал этот подход сам.

Если вы хотите преобразовать массив в двумерный массив, используйте:

$csv_data = call_user_func_array(
    'array_map',
    array_merge(array(NULL), [$csv_data])
);

Или просто перебирайте его, записывая каждую строку по отдельности

$row = 1;
foreach($csv_data as $cellData) {
    $objPHPExcel->getActiveSheet()->setCellValueExplicit('A'.$row++, $cellData);
}

Использование setCellValueExplicit() приведет к тому, что значения будут обрабатываться как строка, поэтому ничто не будет отлито для float, поэтому потеря точности

  • 0
    Благодарю. Оно работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню