我想打开excel文件,然后保存excel文件,名称将是文件名+当前日期和时间。我使用Date()
var wshell;
var excel = new ActiveXObject("Excel.Application");
alert(excel);
var excel_file = excel.Workbooks.Open("book2.xlsx");
excel.Visible = true;
var objWorkbook = excel.Workbooks.Add();
var objWorksheet = objWorkbook.Worksheets(1);
objWorkbook.Worksheets(1).Activate;
objWorksheet.name = "test";
objWorksheet.Paste;
objWorksheet.columns.autofit;
window.clipboardData.setData("Text","");
var today = new Date();
document.write(today.toString());
excel_file.SaveAs("d:\\board.xls"+ (today.toString()));
alert("data saved");
答案 0 :(得分:1)
today
包含要在文件名中使用的非法字符(:
)。您需要清理日期,例如:
var today = new Date().toString().replace(/[^\w]/g, '');
保存时,时间戳应该是文件名的一部分而不是扩展名:
excel_file.SaveAs("D:\\board" + today + ".xls");
您可以使用Date object
方法将时间戳格式化为您想要的内容,而不是.toString().replace()
。
修改强>
以下是您可以修改日期的代码。我已经为您简化了getDate()
,因此您可以修改它以返回您想要的任何形式的日期。
var today = new Date(),
time = today.toTimeString().split(':').join('').substr(0, 4),
timestamp = getDate('dd_mm_yyyy', today) + '_' + time;
function getDate (mode, userdate) {
var dte = userdate || new Date(),
d = dte.getDate().toString(),
m = (dte.getMonth() + 1).toString(),
yyyy = dte.getFullYear().toString(),
dd = (d.length < 2) ? '0' + d : d,
mm = (m.length < 2) ? '0' + m : m,
yy = yyyy.substring(2, 4);
switch (mode) {
case 'dd_mm_yyyy': return dd + '_' + mm + '_' + yyyy;
case 'yyyymmdd': return yyyy + mm + dd;
default: return dte;
}
}
运行上面的代码后, timestamp
包含想要的日期。