PhpSpreadSheet:写入特定的工作表

时间:2018-11-01 10:21:53

标签: php phpspreadsheet

我是PhpSpreadSheet的新手,我想知道是否可以将CSV加载到特定的WorkSheet中吗?

我尝试了下面的代码,但是它似乎将CSV加载到第一个WorkSheet中:/。

<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Reader\Csv;

$spreadsheet = new Spreadsheet();
$spreadsheet->setActiveSheetIndex(0);

$pathToCsv1 = 'files/csv_files/1.csv';
$pathToCsv2 = 'files/csv_files/2.csv';
$pathToCsv3 = 'files/csv_files/3.csv';
$pathToCsv4 = 'files/csv_files/4.csv';

$aCsvFiles = array($pathToCsv1, $pathToCsv2, $pathToCsv3, $pathToCsv4);

foreach ($aCsvFiles as $index => $csvFile) {
    $reader = new Csv();
    $reader->setDelimiter(';');
    $reader->loadIntoExisting($csvFile, $spreadsheet);
    $workSheet = $spreadsheet->createSheet();
    $spreadsheet->setActiveSheetIndex($index + 1);
}

$writer = new Xlsx($spreadsheet);
$writer->save('files/xls_files/all.xlsx');

我在all.xlsx中只得到4.csv,但是我已经创建了WorkSheets

enter image description here

1 个答案:

答案 0 :(得分:0)

将多个文件组合到一个电子表格对象中

虽然您可以限制从打印机读取的工作表的数量 使用setLoadSheetsOnly()方法的工作簿文件,某些读者也 允许您组合来自不同文件的多个单独的“工作表” 放入单个Spreadsheet对象中,其中每个文件都是一个 该工作簿中的单个工作表。对于您阅读的每个文件,您 需要指出使用哪个工作表索引 setSheetIndex()的{​​{1}}方法,然后使用 $reader方法而非实际读取的loadIntoExisting()方法 将该文件放入该工作表。

示例:    

load()

请注意,对多个工作表使用相同的工作表索引不会将文件追加到同一工作表中,而是会覆盖前一次加载的结果。您不能将多个CSV文件加载到同一工作表中。

https://phpspreadsheet.readthedocs.io/en/develop/topics/reading-files/#combining-multiple-files-into-a-single-spreadsheet-object