问题描述
我希望每次“样式”列中的值更改时,空单元格都采用相同样式的值,如下所示:
我真的不知道如何将期望值放入单元格中,如果有人可以帮助我,那将是一个很大的帮助...
<?PHP
//uploaded xlsx file recovery
$xlsx="C:/wamp64/www/Extract_pictures_Excel/xlsx_files/".date('Y_m_d H-i-s')."_file.xlsx";
move_uploaded_file($_FILES["mon_fichier"]["tmp_name"],$xlsx);
// Excel in CSV
$excel = PHPExcel_IOFactory::load($xlsx);
$writer = PHPExcel_IOFactory::createWriter($excel,'CSV');
$writer->setDelimiter(";");
$writer->setEnclosure("");
$nomcsv = "C:/wamp64/www/Extract_pictures_Excel/csv/".date('Ymd_His').".csv";
$writer->save($nomcsv);
$delimiter = ";";
$csv_data = array();
$row = 1;
if (($handle = fopen($nomcsv,'r')) !== FALSE) {
while (($data = fgetcsv($handle,1000,$delimiter)) !== FALSE) {
//I tried this for if this value changes put back the old ones
$data = $data[5] ?: $data[5];
$csv_data[] = $data;
$row++;
}
fclose($handle);
}
if (($handle = fopen($nomcsv,'w')) !== FALSE) {
foreach ($csv_data as $data) {
fputcsv($handle,$data,$delimiter);
}
fclose($handle);
}
?>
解决方法
您需要跟踪以前的样式,一种简单的方法是将其最初设置为空白,如果元素为空白,则从以前的样式进行设置。请注意,您只应更新数组的该元素(因此将[5]
添加到分配中)...
$prevData = [];
while (($data = fgetcsv($handle,1000,$delimiter)) !== FALSE) {
// Overlay current values over the previous values
$data = array_replace ( $prevData,array_filter($data));
// Store current data for future use
$prevData = $data;
$csv_data[] = $data;
$row++;
}