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

PowerShell按当日日期匹配映射表为CSV报表填充Iteration path值

PowerShell 实现CSV报表迭代路径自动匹配方案

前置准备

处理XLSX格式映射表不需要本地安装Microsoft Excel,先在PowerShell中执行以下命令安装依赖模块,执行时遇到源信任提示输入Y同意即可:
Install-Module -Name ImportExcel -Scope CurrentUser -Force

核心实现逻辑

  • 取当日零点的标准日期值,剔除时分秒精度干扰,避免区间判断错误
  • 读取XLSX映射表全量记录,匹配日期区间覆盖当日的条目,提取对应的Iteration path值
  • 全量读取目标CSV文件,保留所有原有列与业务数据,仅统一更新Iteration path列的值
  • 导出处理后的数据到新文件,避免原文件被误改损坏

完整可运行代码

使用前只需修改代码开头的三个文件路径为本地实际路径即可:

# ========== 配置区:修改为你本地的实际文件路径 ==========
$mappingFilePath = "D:\报表配置\迭代日期映射表.xlsx"
$sourceCsvPath = "D:\业务报表\待处理业务报表.csv"
$resultCsvPath = "D:\业务报表\处理完成_业务报表.csv"
# ======================================================

# 加载依赖模块
Import-Module ImportExcel -ErrorAction Stop

# 获取当日0点日期值
$today = (Get-Date).Date

# 读取映射表匹配对应迭代路径
$mappingRecords = Import-Excel -Path $mappingFilePath
$currentIteration = $mappingRecords | Where-Object {
    $_."start date" -le $today -and $_."end date" -ge $today
} | Select-Object -First 1 -ExpandProperty "Iteration path"

# 匹配失败直接终止,避免生成错误数据
if (-not $currentIteration) {
    throw "映射表中无 $today 对应的迭代路径配置,请检查映射表日期区间"
}

# 读取CSV并更新Iteration path列
$csvContent = Import-Csv -Path $sourceCsvPath -Encoding UTF8
foreach ($line in $csvContent) {
    $line."Iteration path" = $currentIteration
}

# 导出结果,UTF8编码避免中文乱码
$csvContent | Export-Csv -Path $resultCsvPath -NoTypeInformation -Encoding UTF8
Write-Host "处理完成,当前匹配迭代路径:$currentIteration,结果已保存至 $resultCsvPath"

常见注意点

  • 请确认映射表的列名与代码中引用的列名完全一致,存在大小写、空格差异时直接修改代码中对应的列名字符串即可
  • 首次运行建议先输出到新的结果文件,核对原有业务列无缺失、Iteration path赋值正确后,再替换正式报表文件
  • 如果映射表存在重叠日期区间,代码默认取第一条匹配到的记录,可根据需要在匹配逻辑前增加排序规则调整优先级
  • 运行报模块加载错误时,关闭当前PowerShell窗口重新打开后重试即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:03:16