Копирование столбца Excel и вставка в новый массив - PullRequest
0 голосов
/ 14 октября 2018

Проблема:

Я пытаюсь скопировать выбранный диапазон ячеек из одной таблицы Excel и вставить ее во вновь созданную таблицу, используя laravel-excel и * 1006.* библиотеки.Пока что код, который я получил, вроде как делает это, но не идеально.

Excel::load($file, function($reader)
{
    $activeSheet = $reader->getActiveSheet();
    $this->data = $activeSheet->rangeToArray(
        'A1:A27',  // The worksheet range that we want to retrieve
        NULL,      // Value that should be returned for empty cells
        true,      // Should formulas be calculated (the equivalent of getCalculatedValue() for each cell)
        true,      // Should values be formatted (the equivalent of getFormattedValue() for each cell)
        true       // Should the array be indexed by cell row and cell column
    );
});

// Create new file.
$newExport = Excel::create('Filename', function($excel) {
    $excel->sheet('Sheetname', function($sheet) {
        $sheet->fromArray($this->data, null, 'B1', true);
    });
});

// Export newly created file.
$newExport->export('xlsx');

Проблема в том, что он также вставляет имя столбца в первую ячейку (0 на скриншотепоскольку у меня было отключено индексирование, при включенном индексировании было бы вставлено A), как вы можете видеть на скриншоте ниже.

Фактический результат: Actual result

Ожидаемый результат: enter image description here

Материал, который я пробовал:

  • Пытался отключить индексирование внутри метода rangeToArray.
  • Добавить имя столбца в список игнорирования (2-й параметр в fromArray()), но это не прагматично, так как я бы добавил каждыйимя одного столбца в списке игнорирования, кроме того, оно вставляет пустое значение в первый столбец и начинается с B2 ячейки.

Если кто-нибудь может дать мне несколько идей, как решить этот случай, было бы здорово.

Спасибо!

1 Ответ

0 голосов
/ 16 октября 2018

Ответ на этот вопрос следующий ...

Прочитайте документацию для библиотеки, которую вы фактически используете, а не ту, на которой она основана.

Причина, по которой онабыло добавление заголовков столбцов, из-за библиотеки laravel-excel fromArray значения свойств метода по умолчанию, для которых heading generation включено по умолчанию.

$sheet->fromArray($this->data, null, 'B1', true);

изменилось на

$sheet->fromArray($this->data, null, 'B1', true, false);

Допустимые параметры:

fromArray($source, $nullValue, $startCell, $strictNullComparison, $headingGeneration).

...