2013-05-28 9 views
7

के रूप में दो या दो से अधिक 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

क्या कोई भी इन दिनों कभी भी प्रलेखन नहीं पढ़ता है? PHPExcel ऑब्जेक्ट्स (इसे PHPExcel User Documentation - Reading Spreadsheet Files कहा जाता है) में फ़ाइलों को पढ़ने के बारे में /Documentation नामक फ़ोल्डर में एक संपूर्ण दस्तावेज़ है, उदाहरण के दर्जनों उदाहरणों के साथ (/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 से कोई लेना देना देने के लिए तैयार हूँ .... मैं इसे किसी भी अधिक स्पष्ट है कि प्रलेखन नामक फ़ोल्डर में है नहीं कर सकते हैं '/ दस्तावेज़ीकरण 'या स्प्रेडशीट फ़ाइलों को पढ़ने के बारे में उन दस्तावेज़ों को' स्प्रेडशीट फाइलें पढ़ना 'कहा जा सकता है –

+0

अरे! आप इसके लिए डेवलपर हैं! मैं आपके चेहरे को जिथूब से पहचानता हूं। मैंने इस पर दस्तावेज़ों के माध्यम से खोज करने की कोशिश की। माफ़ कीजिये। फ़ाइल को डिस्क में सहेजने के लिए मैंने 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";