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

PhpSpreadsheet转换xlsx为csv时新增固定值ClientID列实现咨询

实现方案

这个需求完全可以实现,你只需要在导出CSV前,对每个工作表的所有行追加固定的ClientID字段即可,修改后的代码如下:

use \PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use \PhpOffice\PhpSpreadsheet\Writer\Csv;

// 定义你要固定写入的ClientID值,可根据需求修改
define('CLIENT_ID', '你需要的固定ClientID值');

$reader = new Xlsx();
$uploaded_xls_file = $_FILES['file']['tmp_name'];
$spreadsheet = $reader->load($uploaded_xls_file); 

$loadedSheetNames = $spreadsheet->getSheetNames();
$writer = new Csv($spreadsheet);

foreach($loadedSheetNames as $sheetIndex => $loadedSheetName) {
    $sheet = $spreadsheet->getSheet($sheetIndex);
    // 获取当前工作表的最大列数和最大行数
    $highestRow = $sheet->getHighestRow();
    $highestColumn = $sheet->getHighestColumn();
    $newColumn = ++$highestColumn; // 新的列位置

    // 第一行(表头)追加列名
    $sheet->setCellValue($newColumn . '1', 'ClientID');
    // 从第二行开始逐行追加固定的ClientID值
    for ($row = 2; $row <= $highestRow; $row++) {
        $sheet->setCellValue($newColumn . $row, CLIENT_ID);
    }

    $writer->setSheetIndex($sheetIndex);
    $writer->setPreCalculateFormulas(false);
    $savingpath = $loadedSheetName.'.csv';
    $writer->save($savingpath);
}

代码说明

  • 你只需要修改define('CLIENT_ID', '你需要的固定ClientID值')中引号里的内容,换成你实际要写入的固定值即可
  • 代码会自动识别每个工作表的原有最后一列,在右侧新增列写入表头和固定值,不会影响原有数据的结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:30:01