Excel의 Excel 파일에 행에 양식 데이터를 입력하는 스크립트가 있습니다. 양식이 전송 될 때마다 새 데이터가 동일한 Excel 파일에 추가됩니다.많은 행이 추가됩니다 PHPExcel
문제는 새 데이터가 두 행으로 추가된다는 것입니다. 빈 행이 각 행 사이에 삽입됩니다.
다음은 코드입니다. $ data는 $ _POST 데이터를 포함합니다.
function generateExcel($data) {
$filename = dirname(__FILE__).'/myexcelfile.xlsx';
// this is shortened
$columns = array(
'fieldname1' => 'Column 1',
'fieldname2' => 'Column 2',
);
// check if file exist
if(file_exists($filename)) {
// load existing excel file
$objPHPExcel = PHPExcel_IOFactory::load($filename);
} else {
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
$objWorksheet = $objPHPExcel->getActiveSheet();
$objWorksheet->insertNewRowBefore(1, 1);
// Set column names
$columnIndex = 0;
foreach($columns as $columnName) {
$objWorksheet->setCellValueByColumnAndRow($columnIndex, 1, $columnName);
$columnIndex++;
}
}
// get sheet and highest row
$objWorksheet = $objPHPExcel->getActiveSheet();
$numberOfRows = $objPHPExcel->getActiveSheet()->getHighestRow();
// Insert a new row after highest row
$objWorksheet->insertNewRowBefore($numberOfRows + 1, 1);
// Get the highest row again (should be one more since last time)
// $numberOfRows2 = $objPHPExcel->getActiveSheet()->getHighestRow();
// Insert data for each column
$columnIndex = 0;
foreach($columns as $fieldName => $columnName) {
$fieldValue = $data[$fieldName];
$objWorksheet->setCellValueByColumnAndRow($columnIndex, $numberOfRows + 1, $fieldValue);
$columnIndex++;
}
// Save Excel 2007 file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($filename);
}
이
내가 사용하는 것입니다 : https://stackoverflow.com/a/12417477
NewRowBefore()를 삽입 할 필요가 없습니다. 문제가 발생할 가능성이 높습니다. –
@MarkBaker 문제가 해결되지 않는 것 같습니다. 첫 번째 양식 데이터가 2 행에 추가되었지만 두 번째 입력이 4 행에 추가되고 다음 입력이 행 6에 추가되었습니다. – Patrik
getHighestRow()는 새로운 행을 삽입하여 변경되지 않습니다. 순전히로드시 가장 높은 행 값. –