You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP将CSV文件中Style列非空值填充至同列空单元格

解决CSV文件Style列空值自动填充问题

我看了你当前的代码,里面处理空值的那行$data = $data[5] ?: $data[5];其实没有实际作用——它只是把值赋给自己,完全没实现你要的“当Style列值变化时填充同Style对应值”的逻辑。

要实现这个需求,我们需要在遍历CSV行的时候,维护一个变量来记录最近一次出现的非空Style值,遇到空的Style单元格时,就用这个变量的值来填充。具体修改如下:

修改后的完整代码

<?php 
//上传xlsx文件保存 
$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转换为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;
// 新增变量:保存当前最新的非空Style值
$current_style = '';

if (($handle = fopen($nomcsv, 'r')) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { 
        // 处理表头行(如果第一行是表头,跳过赋值,只记录表头)
        if ($row === 1) {
            $csv_data[] = $data;
            $row++;
            continue;
        }
        
        // 假设Style列是第6列(数组索引为5,因为从0开始计数)
        if (!empty(trim($data[5]))) {
            // 如果当前Style值非空,更新current_style
            $current_style = $data[5];
        } else {
            // 如果当前Style值为空,用最近的非空值填充
            $data[5] = $current_style;
        }
        
        $csv_data[] = $data; 
        $row++; 
    } 
    fclose($handle); 
} 

if (($handle = fopen($nomcsv, 'w')) !== FALSE) { 
    foreach ($csv_data as $data) { 
        fputcsv($handle, $data, $delimiter); 
    } 
    fclose($handle); 
} 
?>

关键修改点说明

  • 新增了$current_style变量,用来追踪最近一次出现的非空Style值。
  • 增加了表头判断:如果是第一行(表头),直接保留原数据,不进行填充逻辑(避免把表头也修改了)。
  • 针对Style列(索引5)做判断:
    • 当单元格非空时,更新$current_style为当前值;
    • 当单元格为空时,用$current_style的值填充该单元格。

注意事项

  • 确认Style列的索引是否正确:如果你的Style列不是第6列(从左数第1列是索引0),需要把$data[5]改成对应的索引值。
  • 用trim()处理空值是为了避免单元格里只有空格被误判为非空值。

内容的提问来源于stack exchange,提问作者Patrick62

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:57:57