Как записать массив непосредственно в файл XSLS с помощью Phpspreadsheet - PullRequest
0 голосов
/ 27 марта 2020

Я на самом деле создаю CSV-файл содержимого моей базы данных (базовый c запрос выбора), используя fputcsv. Он работает отлично. Я хотел бы сейчас создать не CSV, а XSLX с Phpspreadsheet. Я могу вставлять значения ячейка за ячейкой, но она не оптимизирована. В do c я не нахожу, как напрямую вставить массив, который будет интерпретирован как полная строка. Как это сделать ? Это код, который я использую:

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'My column 1');
$sheet->setCellValue('B1', 'My column 2');
$sheet->setCellValue('C1', 'My column 3');
$sheet->setCellValue('D1', 'My column 4');
$sheet->setCellValue('E1', 'My column 5');
$writer = new Xlsx($spreadsheet);

if (mysqli_num_rows($resultSQL)){
  $filename = 'MyFile.csv';
  $output_file = fopen($filename, 'w');
  fputcsv($output_file,array('My column 1','My column 2','My column 3','My column 4','My column 5')); // The old way I create my CSV
  while($line = $resultSQL->fetch_assoc()) {
    fputcsv($output_file, $line); // The old way to put all values of row in my CSV
    // How to do the same with PhpSpreadSheet ?
  }
$writer->save('MyFile.xlsx');

1 Ответ

0 голосов
/ 27 марта 2020
$arrayData = [
    [NULL, 2010, 2011, 2012],
    ['Q1',   12,   15,   21],
    ['Q2',   56,   73,   86],
    ['Q3',   52,   61,   69],
    ['Q4',   30,   32,    0],
];
$spreadsheet->getActiveSheet()
    ->fromArray(
        $arrayData,  // The data to set
        NULL,        // Array values with this value will not be set
        'C3'         // Top left coordinate of the worksheet range where
                     // we want to set these values (default is A1)
    );

https://phpspreadsheet.readthedocs.io/en/latest/topics/accessing-cells/#setting -a-диапазон-ячеек-из-массива

...