Php 当我添加新行时,它将覆盖我添加的最后一行
我正在使用PHPExcel将Excel(xlsx)文件加载到我的html页面中 我使用下面的表单添加了一个新表单,但不幸的是,我添加的每一行都会覆盖第一行。有没有办法刷新,这样我就不会覆盖以前的附加值 这是我添加新行的表格:Php 当我添加新行时,它将覆盖我添加的最后一行,php,phpexcel,Php,Phpexcel,我正在使用PHPExcel将Excel(xlsx)文件加载到我的html页面中 我使用下面的表单添加了一个新表单,但不幸的是,我添加的每一行都会覆盖第一行。有没有办法刷新,这样我就不会覆盖以前的附加值 这是我添加新行的表格: <form action="" method="post" id="AddForm" name="AddForm"> <input type="text" id="company" name="company" value="Enter new name"
<form action="" method="post" id="AddForm" name="AddForm">
<input type="text" id="company" name="company" value="Enter new name" />
<input type="submit" id="save" name="add" value="add"/>
</form>
下面是我用来加载/显示/添加新行的代码
<?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";
?>
我找到了解决方案:
在循环中,每次请求后都需要保存文件:
$objWorksheet->setCellValueByColumnAndRow(0,$num_rows+1,$company_name);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('myExcelFile.xlsx');
echo date('H:i:s') . " Write to Excel2007 format\n";
那么,用于保存新行的代码在哪里?保存新行时,
myExcelFile.xlsx
文件是否会更新?我根本看不到将工作簿写回文件的任何内容,是否还有其他代码没有显示?@Mihai Todor:$objWorksheet->setCellValueByColumnRow(0,$num_rows+1,$name);将行保存在所需的位置。@马克·贝克:我只需要将它保存在页面上,而不是书中的后面。您必须跟踪在HTML中添加的所有新行,因为PHP在调用之间不会持久化。。。每次在HTML中添加新行,然后执行PHP时,它都会像第一次加载页面时那样重新加载Excel文件