从Excel(XML)文件读取数据制作标签工卡等的Photoshop脚本本人因需要制作2000多个仪器标签,编写了此脚本,脚本在PhotoshopCS5、CS6中运行通过,现发给各位网友共享,有需要的下载,部分源码CSDN网上获取的,在此对提供源码的网友表示感谢!我也准备将此源码打包后上传到CSDN,编写源码时只为完成任务,编写的比较简单,如有看不明白或许要改动的地方,可以联系我,闲余时可以免费提供帮助。如想省事可以直接到CSDN下载,直接使用。下面先说一下源码使用说明,最后附上源码。源码使用说明:一、源码包含的文件源码包含三个文件和两个文件夹,如下图所示:Biaoqian——文件夹用来存放制作好输出的标签,脚本没运行前为空文件夹,生成的图片以XML文档中的工号命名。Pic——文件夹存放着标签中的图片,本脚本是做仪器标签的是二维码图片(如图),如果做工卡可以是证件照,图片名称要与工号一致,图片是PNG格式,如果是JPG,需在脚本里修改。biaoqian.xml,存放着制作标签、工卡的数据信息,如下图:特别提示标签、工卡的数据信息用Excel制作,保存为XML表格,如下图:模板.psd——存放背景,我的是仪器标签上传时改的看着有点别扭,凑合着示意一下:标签制作.jsx——脚本文件,以上所有文件放在同一文件夹下后,运行脚本即可以自动生成图片,运行脚本方法:一、右键点击文件,选择Photoshop打开标签制作.jsx;二、在未打开文档的Photoshop界面下双击灰色背景打开文件;三、文件菜单下,选择“脚本”-“浏览”打开文件,生成的图片如下:“姓名”原为“仪器名称”,“工号”原为仪器“编号”,“部门”原为“保管员”。图片的大小根据模板尺寸,位置可以在脚本里设置。脚本源码如下,直接复制到文本文件中,将txt后缀改为jsx即可,需修改脚本,从绿色字体部分开始,XML文件里的列顺序不要改变,改变后需要改脚本。XML文件一定要用Excel保存为“XML表格”格式。//读取XML格式单元格中内容,functionEXCEL(filename){var_this=this;//成员变量varexcelxml;varexcelcursheet;this.IsLoaded=false;//构造函数加载EXCELXML文件varinit=function(){//相对路径自动处理varreg=^([\\w\\s\\u1000-\\u9fff\\.\\(\\)\\[\\]\\-\\{\\}\\&\\^\\%\\$\\#\\@\\!\\~\\,\\;]+[\\\\\\/]+)*[\\w\\s\\u1000-\\u9fff\\.\\(\\)\\[\\]\\-\\{\\}\\&\\^\\%\\$\\#\\@\\!\\~\\,\\;]+\\.xml$;varreg=filename.match(reg);if(reg!=null){filename=JsxPath()+filename;//JsxPath函数见PS常用函数}varxmlFile=newFile(filename);if(xmlFile.exists==false){_this.IsLoaded=false;return;}xmlFile.open(r);varcontents=xmlFile.read();xmlFile.close();_this.excelxml=newXML(contents);if(_this.excelxml==undefined){_this.IsLoaded=false;return;}_this.excelcursheet=1;_this.IsLoaded=true;}init();//选择需要默认操作的Sheetthis.SetSheet=function(sheet){this.excelcursheet=sheet;}//根据单元格坐标选择单元格this.Cells=function(col,row,sheet){if(_this.excelxml==undefined)return;if(sheet==undefined)sheet=_this.excelcursheet;//根据情况使用默认Sheetvarsheetxml;varrowxml;varcellxml;vardataxml;vare;//临时变量//得到Sheetsheetxml=GetSheetXml(sheet)if(sheetxml==undefined)return;//寻找Tablee=sheetxml.elements();for(vari=0;ie.length();i++){if(e[i].localName()==Table){rowxml=e[i];break;}}if(rowxml==undefined)return;//Row扫描e=rowxml.elements();varlinecount=0;for(vari=0;ie.length();i++){if(e[i].localName()==Row){varindex=_this.GetArrtib(e[i],Index);if(index!=undefined){linecount=Number(index);}else{linecount++;}if(linecount==row){rowxml=e[i];break;}}}if(rowxml==undefined)return;//Cell扫描e=rowxml.elements();varlinecount=0;for(vari=0;ie.length();i++){if(e[i].localName()==Cell){varindex=_this.GetArrtib(e[i],Index);if(index!=undefined){linecount=Number(index);}else{linecount++;}if(linecount==col){cellxml=e[i];break;}}}if(cellxml==undefined)return;//得到文本元素e=cellxml.elements();for(vari=0;ie.length();i++){if(e[i].localName()==Data){dataxml=e[i];break;}}if(dataxml==undefined)return;returnString(dataxml.text());}//得到SheetXmlvarGetSheetXml=function(s){if(_this.excelxml==undefined)returnundefined;vare;//临时变量varsheetxml;e=_this.excelxml.elements();for(vari=0;ie.length();i++){if(e[i].localName()==Worksheet){if((typeofs)==number){s--;if(s==0){sheetxml=e[i];break;}}elseif((typeofs)==string&&_this.GetArrtib(e[i],Name)==s){sheetxml=e[i];break;}}}returnsheetxml;}this.GetArrtib=function(xml,name){//使用正则表达式得到属性regstr=+xml.localName()+[\\u1000-\\u9fff\\w\\s\\`\\~\\!\\@\\#\\$\\%\\^\\&\\;\\(\\)\\-\\_\\=\\+\\{\\}\\|\\\'\\,\\.\\:\/]*+name+=\([\\u1000-\\u9fff\\w\\s\\`\\~\\!\\@\\#\\$\\%\\^\\&\\;\\(\\)\\-\\_\\=\\+\\{\\}\\|\\\'\\,\\.\\:]+)\[\\u1000-\\u9fff\\w\\s\\`\\~\\!\\@\\#\\$\\%\\^\\&\\;\\(\\)\\-\\_\\=\\+\\{\\}\\|\\\'\\,\\.\\:\/]*;varstr=xml.toString();varretstr=str.match(regstr);if(retstr==null)returnundefined;retstr=retstr[1]returnretstr;}//根据单元格名称选择单元格////////////////////////////////this.Range=function(range,sheet){varrow=GetStrRow(range);varcol=GetStrCol(range);return_this.Cells(col,row,sheet);}//得到标识中的字母序号列号////////////////////////////////////////varGetStrCol=function(str){len=str.length;str.toUpperCase();varss=;for(vari=0;ilen;i++){a=str.charCodeAt(i);c=str.charAt(i);if(a=65&&a=90){ss+=c;}}len=ss.length;if(len2||len==0)returnundefined;if(len==2){m=ss.charCodeAt(0)-64;n=ss.charCodeAt(1)-64;}if(len==1){m=0;n=ss.charCodeAt(0)-64;}num=m*26+n;returnnum;}//得到标识中的数字序号行号////////////////////////////////////////varGetStrRow=function(str){len=str.length;varss=;for(vari=0;ilen;i++){a=str.charCodeAt(i);c=str.charAt(i);if(a=48&&a=57){ss+=c;}}returnNumber(ss);}}/////////////////////////////////////////////////////////////////////////////////////////得到PS文档文件所在路径///////////////////////////////////////////////////////functionAppPath(doc){if(doc==undefined)doc=app.activeDocument;varretstr;retstr=doc.path.fullName;returnretstr+\\;}//得到脚本文件所在路径//////////////////////////////////////////////////functionJsxPath(){varretstr;retstr=$.fileName;varend=retstr.lastIndexOf(/)retstr=retstr.substring(0,end+1);returnretstr;}//清空一些多余的字符,如空格、换行//////////////////////////////////////////////functionRemoveMoreChar(str0,str){if(str==undefined)str=\n\r;varretstr=;varlen=str0.length;for(vari=0;ilen;i++){varc=str0.charAt(i);if(str.indexOf(c)==-1){retstr=retstr+c;}}returnretstr;}