2011-09-02 15 views
10

Sto usando PHPExcel per generare dinamicamente ricevute d'ordine.Come posso unire documenti Excel usando PHPExcel?

Mi piacerebbe essere in grado di generare un file Excel "di riepilogo", contenente tutte le ricevute dell'ordine (uno per foglio di lavoro).

C'è un modo per "unire" due (o più) documenti Excel in uno con PHPExcel?

+0

quale comportamento ti aspetti? in modo significativo, come vuoi "unire" i tuoi file (copia ogni foglio in un file ...)? – JMax

+0

@JMax, sì per esempio unisci doc1.xlsx, doc2.xslx, doc3.xslx in master_doc.xslx (che contiene tre schede, una per ogni file doc1, doc2 e doc3) – mike23

risposta

8

In Excel, le "schede" sono note come "fogli di lavoro". È possibile creare una cartella di lavoro di Excel con più fogli di lavoro in PHPExcel.

Per riferimento, un'altra risposta su SO è an easy-to-follow guide on how to add additional Worksheets to an existing workbook.

This post on Codeplex ha un esempio di aggiunta di un foglio esterno. Non sono sicuro che sia necessaria tutta la danza per rinominare. (Il collegamento Codeplex ti incoraggia a clonare il foglio di lavoro e a copiare il foglio clonato in modo da non rimuoverlo dalla cartella di lavoro originale, ma non penso che sarebbe un problema a meno che tu non stia scrivendo l'output alla cartella di lavoro di origine.) I pensare qualcosa come questo dovrebbe funzionare:

function getReceiptWorksheet($receiptNumber) { 
    // Do something here to retrieve & return your existing receipt 
} 

function createMasterWorkbook($filename, $receiptNumbers) { 
    $workbook= new PHPExcel(); 

    foreach($receiptNumbers as $receiptNumber){ 
     $worksheet = getReceiptWorksheet($receiptNumber) 
     $workbook->addExternalSheet($worksheet); 
    } 

    $objWriter = new PHPExcel_Writer_Excel2007($workbook); 
    $objWriter->save($filename); 
} 

Poi si può solo chiamare createMasterWorkbook('receipts.xlsx', array(1, 2, 3));.

+1

Grazie, funziona come un incantesimo con linee minime di codice. PHPExcel è una libreria incredibile! – mike23

Problemi correlati