gpt4 book ai didi

javascript - 将多个 .xls 文件转换为 .csv 文件,以分号分隔

转载 作者:行者123 更新时间:2023-11-28 02:41:19 26 4
gpt4 key购买 nike

我有多个 .xls 文件想要转换为 csv 文件,并且已经找到了此 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);

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

非常感谢您的帮助!

最佳答案

我很高兴您找到my post有帮助。不幸的是,似乎唯一的方法是通过控制面板实际更改系统的本地设置。经过多次搜索后我确定了这一点。 Here is a page其中陈述了这一事实。如果您找到其他解决方案,请告诉我们。

关于javascript - 将多个 .xls 文件转换为 .csv 文件,以分号分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com