2016-06-14 10 views
1

Ich habe ein Aufgabenbereich-basiertes Add-In für Excel, das mit office.js entwickelt wurde. Ich kopiere ein Datum auf eine Zelle in der Excel und lese es dann das nächste Mal aus dieser Zelle. Grundsätzlich benutze ich JavaScript Date Objekt, um die gelesene Zeichenfolge von Excel zu Datum zu konvertieren und dann zu verwenden.Wie man mit dem Datum umgehen kann in Excel addin office.js

Ich denke, dass dieser Ansatz Problem verursachen wird, wenn Excel-Datei in englischer Kultur gespeichert wird und in einer Maschine öffnen, die französische Kultur hat. weil das Format des Datums in beiden Kulturen unterschiedlich ist.

ich möchte wissen, wie man mit dieser Situation umgeht. Gibt es eine Möglichkeit zu sagen, dass die Zelle in Excel vom Datumstyp ist. und dann passt es seinen Wert in verschiedenen Kulturen an.

Antwort

0

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: enter image description here

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 : enter image description here

+0

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 –

+0

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. –

+0

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 –