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

如何在Photoshop的JS脚本中读取.xlsx数据并推入数组

解决方案

Photoshop的ExtendScript环境无法直接调用Node.js,我们通过读取CSV文件的方式实现Excel数据匹配(将Excel另存为CSV更易处理,且跨平台通用),具体步骤如下:

1. 预处理Excel文件

将你的.xlsx文件另存为design_templates.csv,确保格式满足:

  • A列内容为设计名称(和PNG文件名完全一致,不含后缀)
  • B列为对应模板的完整路径;若一个设计对应多个模板,重复设计名,每行对应一个模板路径
  • 可选添加表头(如DesignName,TemplatePath),后续脚本可跳过表头行

2. 修改Photoshop脚本

替换原手动定义模板的代码,改为读取CSV并自动匹配模板,完整代码如下:

#target photoshop

// 读取CSV并构建「设计名-模板路径数组」的映射
function readCSV(csvPath) {
    var csvFile = new File(csvPath);
    if (!csvFile.exists) {
        alert("CSV文件不存在,请检查路径");
        return {};
    }
    
    csvFile.open('r');
    var designMap = {};
    var lineContent;
    // 若CSV有表头,保留此句跳过第一行;无表头则注释掉
    csvFile.readln();
    
    while ((lineContent = csvFile.readln()) !== null) {
        var lineParts = lineContent.split(',');
        if (lineParts.length >= 2) {
            var designName = lineParts[0].trim();
            var templatePath = lineParts[1].trim();
            // 同一设计名的模板路径存入数组
            if (!designMap[designName]) {
                designMap[designName] = [];
            }
            designMap[designName].push(templatePath);
        }
    }
    csvFile.close();
    return designMap;
}

// 替换为你的CSV文件实际路径(Windows用\\或/,macOS用/)
var csvFilePath = "/your/full/path/design_templates.csv";
var templateMap = readCSV(csvFilePath);

// 获取当前打开的PNG文件名(移除后缀)
var currentDoc = app.documents[0];
var targetDesignName = currentDoc.name.replace(/\.[^/.]+$/, "");

// 匹配得到对应模板数组,无匹配则为空数组
var excelArray = templateMap[targetDesignName] || [];

// 执行模板处理逻辑
for (var i = 0; i < excelArray.length; i++){
    var templateFile = new File(excelArray[i]);
    if (!templateFile.exists) {
        alert(`模板文件不存在:${excelArray[i]}`);
        continue;
    }
    
    app.open(templateFile);
    if (currentDoc.name.charAt(0) === "W"){
        app.doAction("WGARMENTS-ArtPlace", "ProductActions.ATN");
    } else {
        app.doAction("GARMENTS-ArtPlace", "ProductActions.ATN");
    }
}

关键说明

  • readCSV函数负责解析CSV并构建映射关系,确保一个设计名对应所有关联模板
  • targetDesignName = currentDoc.name.replace(/\.[^/.]+$/, "") 用来提取不带后缀的文件名,保证和Excel A列内容匹配
  • 需根据CSV是否有表头,决定是否保留csvFile.readln()语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:48:16