2012-07-10 177 views
13

¿Cómo puedo añadir una nueva fila a un archivo .xls existente utilizando PHPExcel?¿Agregar una nueva fila con PHPExcel?

¿Tengo que calcular el número de filas que ya existen?

Si es así, ¿cómo puedo hacer que para un archivo de Excel?

Respuesta

28

Suponiendo que esta configuración:

$objPHPExcel = PHPExcel_IOFactory::load("foo.xlsx"); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

Usted puede obtener el número de filas de este modo:

$num_rows = $objPHPExcel->getActiveSheet()->getHighestRow();

Después de esto, se puede mirar en la inserción de una fila mediante la siguiente declaración:

$objWorksheet->insertNewRowBefore($num_rows + 1, 1);

Esto agrega 1 nueva fila antes de $num_rows.

+0

$ objReader se define cómo? – Novak

+0

Seguí la parte del código y no obtuve el resultado correcto. ¿Puede usted eche un vistazo: http://stackoverflow.com/questions/32312743/phpexcel-how-to-use-insertnewrowbefore-function-correctly –

5

El ejemplo anterior sólo se agrega una fila en blanco. El siguiente ejemplo agrega datos provenientes de un formulario.

<?php 

     require_once '../inc/phpexcel/Classes/PHPExcel.php'; 
     require_once '../inc/phpexcel/Classes/PHPExcel/IOFactory.php'; 
     $objPHPExcel = PHPExcel_IOFactory::load("myExcelFile.xlsx"); 
     $objWorksheet = $objPHPExcel->getActiveSheet(); 

     //add the new row 
     $num_rows = $objPHPExcel->getActiveSheet()->getHighestRow(); 
     $objWorksheet->insertNewRowBefore($num_rows + 1, 1); 
     $name = isset($_POST['name']) ? $_POST['name'] : ''; 
     if($submit){ 
    //SAVING THE NEW ROW - on the last position in the table 
     $objWorksheet->setCellValueByColumnAndRow(0,$num_rows+1,$name); 
     } 

     //display the table 
     echo '<table>'."\n"; 
     echo '<thead> 
     <tr> 
      <th>Company Name</th> 
     </tr> 
     </thead>'."\n"; 
     echo '<tbody>'."\n"; 
     foreach ($objWorksheet->getRowIterator() as $row) { 
     echo '<tr>'."\n"; 
     $cellIterator = $row->getCellIterator(); 
     $cellIterator->setIterateOnlyExistingCells(false); 
     foreach ($cellIterator as $cell) { 
     echo '<td>'.$cell->getValue().'</td>'."\n"; 
     } 
     echo '</tr>'."\n"; 
     } 
     echo '</tbody>'."\n"; 
     echo '</table>'."\n"; 
     ?> 
+0

Seguí su código y no conseguir el resultado correcto. ¿Puedes echar un vistazo? http://stackoverflow.com/questions/32312743/phpexcel-how-to-use-insertnewrowbefore-function-correctly –

Cuestiones relacionadas