将多个.xls文件转换为以分号分隔的.csv文件

我有多个.xls文件,我想转换成csv文件,并已经find这个JavaScript:

/* jPaq - A fully customizable JavaScript/JScript library http://jpaq.org/ Copyright (c) 2011 Christopher West Licensed under the MIT license. http://jpaq.org/license/ Version: 1.0.6.000001 Revised: April 6, 2011 */ (function(){jPaq={toString:function(){return"jPaq - A fully customizable JavaScript/JScript library created by Christopher West."}};var e=new ActiveXObject("WScript.Shell");alert=function(a,b,c,d){a==null&&(a="");if(!b)b=WScript.ScriptName;c==null&&(c=alert.OKOnly+alert.Exclamation);d==null&&(d=0);return e.Popup(a,d,b,c)};alert.OKOnly=0;alert.OKCancel=1;alert.AbortRetryIgnore=2;alert.YesNoCancel=3;alert.YesNo=4;alert.RetryCancel=5;alert.Critical=16;alert.Question=32;alert.Exclamation=48;alert.Information= 64;alert.Timeout=-1;alert.OK=1;alert.Cancel=2;alert.Abort=3;alert.Retry=4;alert.Ignore=5;alert.Yes=6;alert.No=7})(); /***** END OF JPAQ *****/ try { // Create an instance of Excel, but don't allow the content // area to be repainted. var xlCSV = 6; var xlApp = new ActiveXObject("Excel.Application"); xlApp.Visible = true; xlApp.ScreenUpdating = false; xlApp.DisplayAlerts = false; // Initialize the counts. var fileCount = 0, csvCount = 0; // Regular expression for match Excel files to be converted. var re = /([^\\\/]+)\.xlsx?$/i; // Reference the containing folder. var fso = new ActiveXObject("Scripting.FileSystemObject"); var fldr = fso.GetFolder(WScript.ScriptFullName.replace(/[\\\/][^\\\/]+$/, "")); // Determine whether or not linefeed characters should be removed. var msg = "Would you like to remove linefeed characters from all cells?"; var title = "Remove Linefeed Characters"; var removeLf = alert.Yes == alert(msg, title, alert.YesNo + alert.Question); // Loop through all of the xls and xlsx files in this folder. for(var e = new Enumerator(fldr.Files); !e.atEnd(); e.moveNext()) { var aFile = e.item(); if(re.test(aFile.Name)) { xlApp.StatusBar = "Processing " + aFile.Path + "..."; // Open the workbook. var wb = xlApp.Workbooks.Open(aFile.Path); // Save each worksheet as a CSV file. for(var e2 = new Enumerator(wb.Sheets); !e2.atEnd(); e2.moveNext()) { var ws = e2.item(); if(removeLf) { ws.UsedRange.Replace("\n", ""); } var csvPath = aFile.Path.replace(re, function($0, $1) { return $1 + "-" + ws.Name + ".csv"; }); ws.SaveAs(csvPath, xlCSV); csvCount++; // Increment the number of CSV's. } // Close the workbook. wb.Close(); // Increment the number of files. fileCount++; } } // Allow alerts to be displayed, and the screen to be updated again. xlApp.DisplayAlerts = true; xlApp.ScreenUpdating = true; // Close Excel. xlApp.Quit(); var msg = "The results are as follows:\nFiles converted: " + fileCount + "\nCSV's created: " + csvCount; var title = "Conversion Process Complete"; alert(msg, title, alert.Information); } catch(e) { // If the Excel workbook is open, close it. try{ wb.Close(false); }catch(e2){} // If Excel is open, change the settings back to normal and close it. try{ xlApp.DisplayAlerts = true; xlApp.ScreenUpdating = true; xlApp.Quit(); } catch(e2){} // Print the error message. var msg = "The following error caused this script to fail:\n" + e.message; var title = "Critical Error Occurred"; alert(msg, title, alert.Critical); } 

但是,此代码使用逗号分隔保存文件,而不是使用分号。 看来,我必须保存我的本地设置的文件(当我通过Excel手动保存它们时,他们与分号保存),我不知道如何…

有没有人知道一个参数

 ws.SaveAs(csvPath, xlCSV); 

方法,所以它会使用我的本地设置?

我会很感激你的帮助!

我很高兴你发现我的post有帮助。 不幸的是,唯一的办法就是通过控制面板切换系统的本地设置。 经过多次search,我确定了这个。 这是一个说明这个事实的页面 。 请让我们知道,如果你find另一种解决scheme。