2017-05-06 2 views
0

Ich habe ein ziemlich spezifisches Problem mit der "Automatische Datenkonvertierung", die Excel macht. Zuerst werde ich versuchen zu erklären, was genau ich mache und wie sich Excel über mich lustig macht;)C# Datum in Zelle in Excel konvertieren (Interop)

Mein Programm erstellt ein Diagramm für Berichte von Temperatursensoren. In den Berichten ist die erste Spalte das Datum des Lesens und die zweite Spalte ist das Lesen der Sensoren für dieses Datum. Das Problem ist die automatische Auswahl der "XAxis-Serie", die Excel macht, wenn die erste Spalte im DateTime-Format ist:

Here ist das Beispiel dafür, was Excel mit den Charts macht, wenn es das Datumsformat "riecht". ..

Und Here ist, wie das Diagramm aussieht, wenn die erste Spalte im Textformat ist.

Ich habe einige Varianten versucht, um die Werte in der ersten Spalte zu konvertieren, aber alles ist zu langsam oder vermasselt die Werte. Bisher ist der „schnellste“ Weg, die ich gefunden ist:

foreach(Range cell in firstCol.Cells) 
     { 
      if (cell.Value is DateTime && !(cell.Value).ToString().Contains("\'")) 
      { 
       cell.Value = "\'" + cell.Value; 
      } 
     } 

Aber das ist nicht schnell genug. Stellen Sie sich 100 Blätter (1 Blatt pro Sensor) und jedes Blatt mit 2500 bis 4000 Reihen vor.

habe ich versucht, Dinge wie:

usedRange.NumberFormat = "@"; 

wie es in ein paar Orte im Internet vorgeschlagen wurde, aber dass für Datumsformate funktioniert nicht. Es konvertiert dies: 01/12/2016 00:30 wie folgt: 42705.02083.

Meine Frage ist also, ob jemand einen besseren oder schnelleren Weg vorschlagen kann, die Daten zu konvertieren oder Excel dazu zu bringen, DateTime als Text zu lesen, ohne etwas zu vermasseln.

Antwort

0

Ich bin sicher, es gibt einen besseren Weg, um die X-Achse sich durch Fixieren, aber wenn alle suchen, ist das Datum im Textformat zu erhalten, die schnelle Lösung wäre so etwas wie:

=TEXT(DATE(2016,1,12)+TIME(0,30,0),"MM/dd/yyyy hh:mm") 
+0

Eigentlich I Ich habe wahrscheinlich das ganze Internet danach gesucht, wie man die X-Achse auf diese spezielle Art und Weise repariert, aber ich habe nichts gefunden. Und ich spreche über eine Option, die mein gesamtes Problem mit einer Zeile beheben würde, wenn sie existierte. https://drive.google.com/open?id=0Byub5fWTQ5hPNGpUckhtZkVKYjQ Das ist die Option, über die ich spreche. Wenn jemand eine Idee hat, wie man etwas mit dieser Option in C# -Code macht, lass es mich bitte wissen. –