Domanda

sto giocando intorno con un PHP - integrazione di MS Excel in questi giorni. Il mio compito è quello di aprire un foglio di calcolo esistente, aggiungere un po 'di dati e salvare il pieno foglio di calcolo come un nuovo file. Fondamentalmente sorta di un motore di template di riempimento, eventhough file xlsx vengono utilizzati come modelli.

Ho guardato in PHPExcel che sembra essere quadro abbastanza bello. In ordine implementare un proof of concept ho fatto la seguente (ridotto al minimo necessaria per illustrare ciò che ho bisogno di fare):

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load("myTemplateToFill.xlsx");

    //Here comes the actual filling
$objWorksheet = $objPHPExcel->createSheet();
$objWorksheet->setTitle('Apple')    ;
$objWorksheet->setCellValue('A1', 'Banana');    
$objPHPExcel->setActiveSheetIndex(0);

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('myFilledTemplate.xlsx');

L'esecuzione di questo ho scoperto che viene creato un nuovo file, il mio Daat è inserito ma purtroppo con tutta la formattazione esistente è perduto.

Quindi la domanda è: esiste un modo per rendere PHPExcel mantenere quei formattigs nel nuovo file? O di andare ancora oltre: è possibile mantenere i grafici ecc in un file di modello e riempire quelli che il modo in cui ho cercato?

Grazie in anticipo per tutta la vostra esperienza condivisa!

K

È stato utile?

Soluzione

Hum, si crea un nuovo foglio di lavoro, che vanta nessun formato di default. Credo che bisogna aggiungere i valori al foglio esistente?

$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');

Altri suggerimenti

La formattazione viene persa a causa di questa linea $ ObjReader-> setReadDataOnly (true); che racconta il lettore a leggere solo i dati dal modello di cartella di lavoro, non la formattazione.

È inoltre necessario modificare i dati nei fogli di lavoro esistenti. La creazione di un nuovo foglio di lavoro creerà un foglio di lavoro non formattato. In alternativa, è possibile utilizzare il metodo PHPExcel_WorkSheet copy ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top