Erfassung von Zeit-Werten aus einer Excel-Zelle
Schreibe ich eine Excel-Anwendung, Lesen und schreiben angegebenen Werte aus einer Excel-Datei und zeigen Sie Sie an den Benutzer. Jedoch, wenn ich versuche zu Lesen aus einer Zelle, welche ein Number Format
oder eine Funktion eingegeben 'hh:min' (Hour:Min)
ich kann nicht erhalten, dass der Wert, wie genau ich es haben möchte.
Hier ist mein code...
ws[dateTimePicker1.Value.Day + 1].get_Range("F" + i.ToString(), Type.Missing);
if (range.Value2 != null)
val += " - " + range.Value2.ToString(); //Sets FXX to val
lbHK1.Items.Add(val);
Wo...
ws
= mein ArbeitsblattdateTimePicker1
= mein date time picker, die mir hilft zu entscheiden, welche Datei geöffnet werdeni
= ist eine ganze Zahl, die mir hilft zu entscheiden, Zeilennummer der Zelle,range
= wird ein Objekt erstellt von Microsoft.Office.Interop.Excel.Bereich
In meinem Beispiel, wenn i = 11
, F11
ist die Zelle, in die die Zeit Wert, die 06:30
(in Excel fx : 06:30:00
). Jedoch, wenn ich versuche, zu bekommen, dass Wert ist, es gibt eine double
geben wie 0.263888888888889
Wie kann ich den Wert korrekt formatiert, wie es ist in Excel angezeigt, anstatt einen sinnlosen double-Wert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Excel speichert Uhrzeiten intern als Doppel, die dezimalen von Bruchteilen einer 24-Stunden-Tag: so 6:30 UHR wäre 0.2708333
Beim Umgang mit Excel-Daten, das Datum kann entweder gespeichert werden, als eine string-Darstellung von Datum, oder es kann ein OA Datum (OLE Automation Date). Ich habe festgestellt, dass die Prüfung für beide Arten ist der sicherste Weg beim Parsen von Excel-Daten.
Hier ist eine Erweiterung Methode, die ich schrieb für die Konvertierung:
In deinem Beispiel, die Verwendung wäre:
Excel speichert die Zeit in Bruchteilen eines Tages, 12:00 gespeichert werden, wie 0,5 da 12/24 = 1/2 = 0.5
Bekommen die Stunden, die Sie haben, multiplizieren Sie die excel-Zeit von 24 und dann Runde das Ergebnis auf eine ganze Zahl.
Um die Minuten (da ein Tag hat 1440 Minuten) multipliziert man den Wert von 1440, dies wird Ihnen die Minuten vergangen, seit 00:00, müssen Sie dividieren durch 60 und Arbeit über den Rest der operation, um die Zeit in Minuten.
Hier ist ein snippet: