标题: 100元求助批处理出货文件 [打印本页]
作者: sjbl 时间: 2020-12-15 00:17 标题: 100元求助批处理出货文件
我公司每天从系统导出的出货单不便于仓库出货,能否请大神帮忙设计如何从DO0029批处理至DO0029副本的样式,仓库的人文化不高,希望尽可能简便一些。
支付宝或者微信均可 微信13311886303
作者: went 时间: 2020-12-15 01:32
本帖最后由 went 于 2020-12-15 19:58 编辑
保存为bat,ANSI编码,拖动要处理的csv文件到bat文件上即可- /*&cls&@echo off
- if "%~1"=="" echo.请拖动要处理的csv文件到本程序图标上&pause&exit
- if /i not "%~x1"==".csv" echo.非csv文件!&pause&exit
- cd /d "%~dp1"
- del "%~n1_new.xls" /f >nul 2>nul
- echo.%~1| cscript -E:javascript -Nologo "%~0" &pause&exit
- */
- //交换一行数据
- function swap(lineNum,maps,sheet){
- shell.Exec("cmd /c title 处理第" + lineNum +"行数据.");
- var array,tmpStr="",firstCol=null
- for(var key in maps){
- if(firstCol == null)
- firstCol = key;
- tmpStr+=sheet.Cells(lineNum,maps[key]).Text == "0" ? "" : sheet.Cells(lineNum,maps[key]).Text;
- tmpStr += ",";
- }
- for(var key in maps){
- sheet.Cells(lineNum,maps[key]).Value = tmpStr.split(",")[maps[key]-firstCol];
- }
- }
- //开始
- var csvFile = WSH.StdIn.ReadLine();
- var eObj = new ActiveXObject("Excel.Application");
- var fObj = new ActiveXObject("Scripting.FileSystemObject");
- var shell = new ActiveXObject("WScript.Shell");
- eObj.Visible = false;
- var excelA = eObj.Workbooks.Open(csvFile.replace(/\\/g,"\\\\"));
- //复制到xls
- WSH.Echo("正在复制csv数据到xls ...\n");
- excelA.ActiveSheet.Copy();
- excelB = eObj.Workbooks.Item(2);
- excelA.Close();
- //计算行列数
- var totalLine = 0;
- var totalCol = 0;
- var f = fObj.OpenTextFile(csvFile,1);
- while(!f.AtEndOfStream){
- var curCol = f.ReadLine().split(",").length;
- if(curCol > totalCol)totalCol = curCol;
- totalLine += 1;
- }
- //自定义数据
- //*************************************************
- var maps={4:4,5:9,6:7,7:6,8:5,9:8,10:10}; //列交换数据 [第几列:换到第几列]
- var leftTop = "B5",right = "L",bottom = totalLine; //加边框范围数据 [左上角,右边界,下边界]
- //*************************************************
- //添加边框
- WSH.Echo("正在添加边框 [" + leftTop+ ":" + right + bottom + "] ...\n");
- var cells = eObj.Range(leftTop+ ":" + right + bottom);
- cells.Borders.LineStyle = 1;
- cells.Borders.Weight = 2;
- WSH.Echo("正在调整数据...\n");
- //交换名称
- swap(6,maps,excelB.ActiveSheet);
- //交换数字
- for(var i=8;i<totalLine;i++)
- swap(i,maps,excelB.ActiveSheet);
- //生成文件
- excelB.SaveAs(fObj.GetParentFolderName(csvFile)+"\\"+fObj.GetBaseName(csvFile)+"_new.xls");
- eObj.Quit();
- shell.Exec("cmd /c title 处理完成!");
- WSH.Echo("完成,输出文件: "+fObj.GetParentFolderName(csvFile)+"\\"+fObj.GetBaseName(csvFile)+"_new.xls");
复制代码
作者: zaqmlp 时间: 2020-12-15 07:11
bat跟csv文件放一起双击运行
作者: ivor 时间: 2020-12-15 09:01
本帖最后由 ivor 于 2020-12-15 10:59 编辑
office 自带清除单元格0为空
作者: bangyou 时间: 2021-1-1 21:26
回复 3# zaqmlp
大牛,,,bat居然/* */,然后下面写的是js脚本么?
请教下,这句怎么理解啊dir /a-d-h/b *.csv|cscript -nologo -e:jscript "%~f0" "%newfolder%"
作者: terse 时间: 2021-1-2 13:56
将目录下所有 csv文件传递给cscript处理 这里"%newfolder%"是保存文件处理后的新目录吧
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |