1. 程式人生 > >使用phpExcel 複製sheet到新建的檔案中

使用phpExcel 複製sheet到新建的檔案中

/**
 * Created by PhpStorm.
 * User:廣州第一靚仔-Stone
 * Date: 2018/11/26
 * Time: 下午5:35
 */

try {
    $objReader = PHPExcel_IOFactory::createReaderForFile($file);
}catch (Exception $e) {
    echo "捕獲到異常";
    echo $e->getMessage();
}

// 判斷使用哪種格式 獲取原檔案
if($type=='xls'){
    $objReader = PHPExcel_IOFactory::createReader('Excel5');
}elseif($type=='xlsx'){
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
}elseif($type=='csv'){
    $objReader = PHPExcel_IOFactory::createReader('CSV');
}

$objPHPExcel = $objReader->load($file);
$newExcel = new PHPExcel(); // 新的excel表格
// 設定屬性
$newExcel->getProperties()
    ->setLastModifiedBy($objPHPExcel->getProperties()->getLastModifiedBy()) //設定最後修改者
    ->setTitle($objPHPExcel->getProperties()->getTitle())//設定標題
    ->setSubject($objPHPExcel->getProperties()->getSubject())//設定主題
    ->setDescription($objPHPExcel->getProperties()->getDescription()) //設定備註
    ->setKeywords($objPHPExcel->getProperties()->getKeywords())//設定標記
    ->setCategory($objPHPExcel->getProperties()->getCategory()); //設定類別

//複製sheet

$k = 0;
foreach ($objPHPExcel->getSheetNames() as $sheetName){ //獲取檔案裡面每個sheet
    $sheet = $objPHPExcel->getSheetByName($sheetName);
    $sheet->setTitle('Sheet'.$k);
    $newExcel->addExternalSheet($sheet);//複製到新的物件中
    unset($sheet);
    $k ++;
}

// 因為初始化PHPExcel之後會預設生成第一個叫Worksheet的表格,刪除掉

$newExcel->removeSheetByIndex(0);

// 判斷使用哪種格式建立寫入物件
$objWriter = '';
if($type=='xls'){
    $objWriter = PHPExcel_IOFactory::createWriter($newExcel, 'Excel5');
}elseif($type=='xlsx'){
    $objWriter = PHPExcel_IOFactory::createWriter($newExcel, 'Excel2007');
}elseif($type=='csv'){
    $objWriter = PHPExcel_IOFactory::createWriter($newExcel, 'CSV');
}

//$objWriter = PHPExcel_IOFactory::createWriter($newExcel, 'Excel2007');
$objWriter->save($file);