Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel中与PHPSReadSheet合并_Php_Excel_Merge_Phpspreadsheet - Fatal编程技术网

在excel中与PHPSReadSheet合并

在excel中与PHPSReadSheet合并,php,excel,merge,phpspreadsheet,Php,Excel,Merge,Phpspreadsheet,我想将2个或更多excel与PHPSReadSheet合并。我试图保留每张图纸的样式,这是我的代码: <?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $inputFileType = 'Xlsx'; $inputFileNames = [ 'a.xlsx', 'b.xlsx', 'c.xlsx'

我想将2个或更多excel与PHPSReadSheet合并。我试图保留每张图纸的样式,这是我的代码:

<?php

    require 'vendor/autoload.php';


    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

    $inputFileType = 'Xlsx';
    $inputFileNames = [
        'a.xlsx',
        'b.xlsx',
        'c.xlsx'
    ];
    $sheetnames = [
        'Worksheet',
        'Worksheet1',
        'Worksheet2'
        ];
    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
    $reader->setLoadSheetsOnly($sheetnames);
    $inputFileName = array_shift($inputFileNames);
    $spreadsheetMain = $reader->load($inputFileName);
    $spreadsheetMain->getActiveSheet()->setTitle('page0');
    $contador = 1;
    foreach ($inputFileNames as $book => $inputFileName) {
        echo ('$inputFileName: ' . $inputFileName) . '</br>';
        $spreadsheet = $reader->load($inputFileName);
        $clonedWorksheet = clone $spreadsheet->getActiveSheet()->setTitle($inputFileName[0]);
        $clonedWorksheet->setTitle('page' . $contador);
        $spreadsheetMain->addSheet($clonedWorksheet);
        $contador++;
    }
    $writer = new Xlsx($spreadsheetMain);
    $writer->save('prueba1.xlsx');

addExternalSheet
的问题是,我需要用相同的名称命名两张表(加载的原始表和克隆的表)。(所有文件都在这里:,mergeSolved是正确的文件)这是解决方案的代码:
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$inputFileType = 'Xlsx';
$inputFileNames = [
    'a.xlsx',
    'b.xlsx',
    'c.xlsx'
];
$sheetnames = [
    'Worksheet',
    'Worksheet1',
    'Worksheet2'
];
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
$reader->setLoadSheetsOnly($sheetnames);
$inputFileName = array_shift($inputFileNames);
$spreadsheetMain = $reader->load($inputFileName);
$spreadsheetMain->getActiveSheet()->setTitle('page0');
$contador = 1;
foreach ($inputFileNames as $book => $inputFileName) {
    echo ('$inputFileName: ' . $inputFileName) . '</br>';
    $spreadsheet = $reader->load($inputFileName);
    $clonedWorksheet = clone $spreadsheet->getSheetByName('Worksheet'.$contador);
    $clonedWorksheet->setTitle('Worksheet'.$contador);
    $spreadsheetMain->addExternalSheet($clonedWorksheet);
    $contador++;
}
$writer = new Xlsx($spreadsheetMain);
$writer->save('prueba1.xlsx');`
需要“vendor/autoload.php”;
使用PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$inputFileType='Xlsx';
$InputFileName=[
“a.xlsx”,
“b.xlsx”,
“c.xlsx”
];
$sheetnames=[
“工作表”,
“工作表1”,
“工作表2”
];
$reader=\PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
$reader->setLoadSheetsOnly($sheetnames);
$inputFileName=array\u shift($inputFileName);
$spreadsheetMain=$reader->load($inputFileName);
$spreadsheetMain->getActiveSheet()->setTitle('page0');
$contador=1;
foreach($inputFileNames作为$book=>$inputFileName){
回显(“$inputFileName:”.$inputFileName)。“
”; $spreadsheet=$reader->load($inputFileName); $clonedWorksheet=clone$spreadsheet->getSheetByName(“工作表”。$contador); $clonedWorksheet->setTitle(“工作表”。$contador); $spreadsheetMain->addExternalSheet($clonedWorksheet); $contador++; } $writer=newxlsx($spreadsheetMain); $writer->save('prueba1.xlsx')`
需要“vendor/autoload.php”;
$lists=[
“flie_01.xlsx”,
“flie_02.xlsx”
];
$outfile='/tmp/merge.xlsx';
$merge_spreadsheet=new\PhpOffice\PhpSpreadsheet\spreadsheet();
$merge_电子表格->getProperties()->setCreator(“act”);
foreach($列为$file){
}
$merge_电子表格->removeSheetByIndex(0);
$writer=\PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet,'Xlsx');
$writer->save($outfile);
if(!file_exists($file)){
    continue;
}            

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$reader-&gt;setReadDataOnly(true);
$spreadsheet = $reader-&gt;load($file);

foreach($spreadsheet-&gt;getSheetNames() as $sheet_name ){
    $clonedWorksheet = clone $spreadsheet-&gt;getSheetByName($sheet_name);
    $clonedWorksheet-&gt;setTitle($sheet_name);
    $merge_spreadsheet-&gt;addSheet($clonedWorksheet);                
}