复制 excel 列并插入到新数组中
Copying excel column and inserting into new array
问题:
我想要实现的是从一个 excel 电子表格中复制选定范围的单元格,然后使用 laravel-excel
和 phpspreadsheet
库将其插入到新生成的电子表格中。到目前为止,我得到的代码在某种程度上可以做到这一点,但并不理想。
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
) ,如您在下面的屏幕截图中所见。
实际结果:
预期结果:
我试过的东西:
- 试图在
rangeToArray
方法中关闭索引。
- 将列名添加到忽略列表中(
fromArray()
中的第二个参数),但这不实用,因为我最终会将每个列名添加到忽略列表中,而且,它会将空白值插入第一列从 B2
个单元格开始。
如果有人能给我一些解决此案的想法,那就太好了。
谢谢!
案例答案如下...
阅读您实际使用的库的文档,而不是它所基于的库的文档。
添加列标题的原因是 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)
.
问题:
我想要实现的是从一个 excel 电子表格中复制选定范围的单元格,然后使用 laravel-excel
和 phpspreadsheet
库将其插入到新生成的电子表格中。到目前为止,我得到的代码在某种程度上可以做到这一点,但并不理想。
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
) ,如您在下面的屏幕截图中所见。
实际结果:
预期结果:
我试过的东西:
- 试图在
rangeToArray
方法中关闭索引。 - 将列名添加到忽略列表中(
fromArray()
中的第二个参数),但这不实用,因为我最终会将每个列名添加到忽略列表中,而且,它会将空白值插入第一列从B2
个单元格开始。
如果有人能给我一些解决此案的想法,那就太好了。
谢谢!
案例答案如下...
阅读您实际使用的库的文档,而不是它所基于的库的文档。
添加列标题的原因是 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)
.