Wenn der Werttyp der Zelle ein Datum ist, wenn wir den Wert aus diesem Text erhalten, erhalten wir eine Nummer anstelle der Textanzeige auf der Benutzeroberfläche.
Die Zahl gibt die Anzahl der Tage seit 1900-Jan-0 plus einen Bruchteil eines 24-Stunden-Tages an: ddddd.tttttt. Dies wird als serielles Datum oder serielles Datum/Uhrzeit bezeichnet. Informationen zu den Daten und Uhrzeiten in Excel finden Sie unter here. Das Datum in JavaScript beginnt jedoch am 1. Januar 1970 UTC (siehe Date in JavaScript).
Wir müssen die Zahl in das Datum, das wir wollten, in JavaScript konvertieren. Und das Excel berechnet die Zeitzone nicht, wenn es die Datum-Uhrzeit in Wert konvertiert.
Hier ist eine Demo, die den Wert des Datums in Excel zu UTC für Ihre Referenz zu konvertieren:
function getJsDateFromExcel(excelDateValue) {
return new Date((excelDateValue- (25567+2)) * 86400 * 1000);
}
Datum in Excel: 6/14/2016 12:00:00 PM
Wert des Datums: 42535.5
Konvertieren Sie den Wert in das Datum in JavaScript: getJsDateFromExcel(42535.5).toUTCString()
Ergebnis: "Di, 14. Juni 2016 00.00.00 GMT"
aktualisieren
Was ist das Datumsformat in Ihrem Code? Wir müssen das korrekte Format angeben, das Excel erkennen könnte. Nachdem Sie den Wert festgelegt, wenn das Datum als String erkennen wird unten statt wie Abbildung links wird align:
Hier ist der Code zu setzen/erhält das Datum:
function setData() {
Excel.run(function (ctx) {
var sheetName = "Sheet1";
var rangeAddress = "A1";
var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress);
range.load("values");
return ctx.sync().then(function() {
range.values = "6/15/2016 13:00:00";
});
}).catch(function (error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
}
function getData() {
Excel.run(function (ctx) {
var sheetName = "Sheet1";
var rangeAddress = "A1";
var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress);
range.load("values");
return ctx.sync().then(function() {
var d = getJsDateFromExcel(range.values[0])
var strD = d.toUTCString();
});
}).catch(function (error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
}
Ergebnis getData :
hi, ich stelle den Wert des Bereichs unter Verwendung des Datums in der Schnur ein, ich bin nicht fähig, den Werttyp als Datum einzustellen. also bekomme ich den numerischen Wert nicht, wenn ich die Zelle mit Javascript lese. Ich bekomme nur das Datum in der Zeichenfolge. Ich sehe diese Nummer nicht, die du sagst. Ich verwende API von https://github.com/OfficeDev/office-js-docs/blob/master/reference/excel/range.md –
Was ist das Datumsformat in Ihrem Code? Wir müssen das korrekte Format angeben, das Excel erkennen könnte. Siehe das Update für den Code zum Testen. –
Beachten Sie auch, dass es eine .NumberFormat-Eigenschaft gibt, mit der Sie etwas wie "JJJJ-MM-TT" einstellen können. Siehe https://support.office.com/de-de/article/Create-oder-löschen-a-custom-number-format-78f2a361-936b-4c03-8772-09fab54be7f4 für die vollständige Liste der Optionen –