返回列表 发帖

100元求助批处理出货文件

我公司每天从系统导出的出货单不便于仓库出货,能否请大神帮忙设计如何从DO0029批处理至DO0029副本的样式,仓库的人文化不高,希望尽可能简便一些。
支付宝或者微信均可 微信13311886303

将目录下所有 csv文件传递给cscript处理  这里"%newfolder%"是保存文件处理后的新目录吧

TOP

回复 3# zaqmlp


    大牛,,,bat居然/* */,然后下面写的是js脚本么?

请教下,这句怎么理解啊dir /a-d-h/b *.csv|cscript -nologo -e:jscript "%~f0" "%newfolder%"

TOP

本帖最后由 ivor 于 2020-12-15 10:59 编辑

office 自带清除单元格0为空
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

bat跟csv文件放一起双击运行
1

评分人数

提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 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");COPY

TOP

返回列表