通过javascript保存excel文件与当前日期和时间

时间:2013-11-20 17:41:41

标签: javascript excel

我想打开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");

1 个答案:

答案 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包含想要的日期。