Pregunta

Me estoy jugando con un PHP - la integración de MS Excel en estos días. Mi tarea es abrir una hoja de cálculo existente, añadir algunos datos y guardar el llenado hoja de cálculo como un archivo nuevo. Básicamente especie de un motor de llenado plantilla, apesar de archivos xlsx se utilizan como plantillas.

PHPExcel que parece ser bastante agradable marco. En orden para implementar una prueba de concepto hice lo siguiente (se reduce al mínimo requerido para ilustrar lo que tengo que hacer):

$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');

Al ejecutar esta me encontré con que se crea un nuevo archivo, se inserta mi Daat pero lamentablemente con todo el formato existente está perdido.

Así que la pregunta es, ¿hay una manera de hacer PHPExcel guardan las formattigs en el nuevo ¿archivo? O ir aún más lejos: ¿es posible mantener tablas etc. en un archivo de plantilla y llenar la forma en las que he intentado?

Gracias de antemano por toda su experiencia compartida!

K

¿Fue útil?

Solución

Hum, va a crear una nueva hoja de cálculo, cosa que no tiene formato por defecto. Yo creo que hay que añadir sus valores a la hoja existente?

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

Otros consejos

El formato se pierde a causa de esta línea $ ObjReader-> setReadDataOnly (true); que le dice al lector que lea solamente los datos de su libro de plantilla, no el formato.

También es necesario modificar los datos en las hojas de trabajo existentes. Creación de una nueva hoja de cálculo creará una hoja de cálculo sin formato. Como alternativa, puede utilizar el método de copiar PHPExcel_WorkSheet ()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top