2013-05-28 95 views
7

2つの既存ファイルでこれを行う方法はどこにでもありますが、新しいファイルの作成に関するすべてのドキュメントのようです。私はファイルの1つを取って、新しいワークシートとしてそれに2番目のファイルを追加し、それをサーバーに保存したいと思います。私はこのような無駄にしようとしてきた :2つ以上のxlsファイルをワークシートとして結合PHPExcel

$file="test.xls"; 
$file2="test2.xls"; 
$outputFile = "final.xls"; 
$phpExcel = new PHPExcel($file); 
$phpExcel->getActiveSheet(); 
$phpExcel->setActiveSheetIndex(0); 
$phpExcel->addSheet($file2); 
header("Content-Type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$outputFile"); 
header("Cache-Control: max-age=0"); 
$objWriter = PHPExcel_IOFactory::createWriter($phpExcel, "Excel5"); 
file_put_contents($outputFile, $objWriter); 

任意の助けいただければ幸いです。 PHPの初心者です。

答えて

17

最近誰もドキュメントを読んでいないのですか? /Documentationというフォルダには、PHPExcelオブジェクト(これはPHPExcel User Documentation - Reading Spreadsheet Filesという)にファイルを読み込み、数多くの例があります(/Documentation/Examples/Readerフォルダは見やすく、new PHPExcel($file)はありません)。また、保存時にfile_put_contents()を使用すると言った例やドキュメントはありません。

$file1="test.xls"; 
$file2="test2.xls"; 
$outputFile = "final.xls"; 

// Files are loaded to PHPExcel using the IOFactory load() method 
$objPHPExcel1 = PHPExcel_IOFactory::load($file1); 
$objPHPExcel2 = PHPExcel_IOFactory::load($file2); 

// Copy worksheets from $objPHPExcel2 to $objPHPExcel1 
foreach($objPHPExcel2->getAllSheets() as $sheet) { 
    $objPHPExcel1->addExternalSheet($sheet) 
} 

// Save $objPHPExcel1 to browser as an .xls file 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel1, "Excel5"); 
header("Content-Type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$outputFile"); 
header("Cache-Control: max-age=0"); 
$objWriter->save('php://output'); 
+0

私は本当にPHPExcelとは何を文書放棄する準備ができています....私はこれ以上明確なドキュメントと呼ばれるフォルダ内にあることを確認することはできません'/ Documentation'や、スプレッドシートファイルの読み込みに関するドキュメントは、'スプレッドシートファイルの読み込み 'と呼ばれるかもしれません。 –

+0

Hey!あなたはこれのための開発者です!私はあなたの顔をギターから認識します。私はそれについてのドキュメントを検索してみました。ごめんなさい。 file_put_contents()を使用してファイルをディスクに保存しました。 – user2430227

+0

これは素晴らしい作品です。ありがとうございました。 – user2430227

3
// update from office site 

    $filenames = array('doc1.xlsx', 'doc2.xlsx'); 

    $bigExcel = new PHPExcel(); 
    $bigExcel->removeSheetByIndex(0); 

    $reader = PHPExcel_IOFactory::createReader($input_file_type); 

    foreach ($filenames as $filename) { 
     $excel = $reader->load($filename); 

     foreach ($excel->getAllSheets() as $sheet) { 
      $bigExcel->addExternalSheet($sheet); 
     } 

     foreach ($excel->getNamedRanges() as $namedRange) { 
      $bigExcel->addNamedRange($namedRange); 
     } 
    } 

    $writer = PHPExcel_IOFactory::createWriter($bigExcel, 'Excel5'); 

    $file_creation_date = date("Y-m-d"); 

    // name of file, which needs to be attached during email sending 
    $saving_name = "Report_Name" . $file_creation_date . '.xls'; 


    // save file at some random location  
    $writer->save($file_path_location . $saving_name); 

    // More Detail : with different object: 
Merge multiple xls file into single one is explained here: 
I'm going to describe a bit different: 

http://rosevinod.wordpress.com/2014/03/15/combine-two-or-more-xls-files-as-worksheets-phpexcel/

0
// Combine all .csv files into one .xls file, 
$cache_dir = "/home/user_name/public_html/"; 
$book1 = $cache_dir . "book1.csv"; 
$book2 = $cache_dir . "book2.csv";  
$outputFile = $cache_dir . "combined.xls"; 
$inputFileType = 'CSV'; 
$inputFileNames = array($book1,$book2); 

$objReader = new PHPExcel_Reader_CSV(); 

/** Extract the first named file from the array list **/ 
$inputFileName = array_shift($inputFileNames); 
/** Load the initial file to the first worksheet in a PHPExcel Object **/ 
$objPHPExcel = $objReader->load($inputFileName); 
/** Set the worksheet title (to the filename that we've loaded) **/ 
$objPHPExcel->getActiveSheet() 
      ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); 

/** Loop through all the remaining files in the list **/ 
foreach($inputFileNames as $sheet => $inputFileName) { 
    /** Increment the worksheet index pointer for the Reader **/ 
    $objReader->setSheetIndex($sheet+1); 
    /** Load the current file into a new worksheet in PHPExcel **/ 
    $objReader->loadIntoExisting($inputFileName,$objPHPExcel); 
    /** Set the worksheet title (to the filename that we've loaded) **/ 
    $objPHPExcel->getActiveSheet()->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); 

} 

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 
$objWriter->save($outputFile); 

$objPHPExcel->disconnectWorksheets(); 
unset($objPHPExcel); 

echo "DONE"; 
関連する問題