Punit
Punit

Reputation: 33

Save excel file with current date and time through javascript

I want to open the excel file and then save the excel file and the name will be file name + current date and time. I am not getting this result for date I have used 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");

Upvotes: 2

Views: 4412

Answers (1)

Teemu
Teemu

Reputation: 23396

today contains an illegal character (:) to use in a file name. You need to clean your date, for example something like this:

var today = new Date().toString().replace(/[^\w]/g, '');

And when saving, the timestamp should be a part of the file name instead of the extension:

excel_file.SaveAs("D:\\board" + today + ".xls");

Instead of .toString().replace() you can format the timestamp to look like you want with methods of Date object.


EDIT

Here's the code with which you can modify your dates. I've simplified getDate() for you, hence you can modify it to return a date in what ever form you want.

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 contains a date in wanted form after run the code above.

Upvotes: 1

Related Questions