2012-03-25 7 views
0

Ich habe eine Anwendung in C# erstellt, liest Excel-Datei und danach Wenn Sie einige Bedingungen überprüfen, wird eine Zeile ausgewählt, die in eine andere Excel-Datei geschrieben werden soll.Excel zeigt "#########", wenn ich versuche, DateTime.Now.tostring() auf eine Zelle in Excel zu schreiben

Alles funktioniert gut, aber ich muss die Datei mit der DateTime.Now.ToString() beenden.

string date = DateTime.Now.ToString(); 
ExcelWorkSheet2.Cells[newFileRow, 1] = date; 

Wenn ich die Datei erstellt sehe, zeigt es "########" Symbol anstelle des tatsächlichen Datums. Wenn ich diese Zelle auswähle, ändert sie sich in das richtige Datumsformat.

Was kann schief gehen?

+3

Möglicherweise hasst Excel, um einen Wert in einem Feld anzuzeigen, das zu schmal ist. –

+1

So zeigt Excel eine Zelle, deren Breite zu klein für das gewählte Anzeigeformat ist, oder? – tripleee

+0

Yup, wenn ich die Zelle erweitern, zeigt es mir richtige Werte. Wie mache ich das programmatisch? –

Antwort

2

Sie müssen die Größe der Zelle erweitern, damit sie ordnungsgemäß angezeigt wird. Dies geschieht am einfachsten durch einen Doppelklick auf die Spaltenüberschrift, um sie für alle Daten zu erweitern.

+0

Yup, wenn ich die Zelle erweitere, zeigt es mir richtige Werte. Wie mache ich das programmatisch? Geben Sie die Größe einer Spalte an. –

+0

@ user1209631 Was meinen Sie mit der Größe einer der Spalten? – Woot4Moo

+0

Ich meine Breite in der Spalte? –

3

##### wird normalerweise von Excel angezeigt, wenn der Wert in der Zelle zu breit ist. Was passiert, wenn Sie versuchen, die Spaltenbreite ein wenig zu erweitern?

+0

* zu schmal, nicht zu breit –

+0

Yup, wenn ich die Zelle erweitern, zeigt es mir richtige Werte. Wie mache ich das programmatisch? –

+0

@KyleTrauberman: Die _column_ ist zu eng; der _value_ ist zu weit ;-) –

1

Versuchen Sie einfach, die Spaltenanzeige ein wenig zu erweitern.

+0

Yup, wenn ich die Zelle erweitern, zeigt es mir richtige Werte. Wie mache ich das programmatisch? Gibt man die Größe für eine Spalte an? –

+0

((Microsoft.Office.Interop.Excel.Range) ExcelWorkSheet2.Cells [newFileRow, 1]). EntireColumn.ColumnWidth = date.Length; –

1

Wie die anderen bereits gesagt haben, ist die Spalte für Ihren Datetime-Wert nicht breit genug.

Ohne etwas in die Klammern zu setzen, gibt DateTime.Now.ToString() jedes Detail des aktuellen Datums zurück.

Sie können dies abschneiden, indem Sie zwischen den Klammern einige Sprachmarkierungen einfügen, gefolgt von einigen Formatierungsinformationen.

  • dd für aktuelles Datum
  • MM für aktuellen Monat
  • yyyy für die laufende Jahr
  • hh für aktuelle Stunde
  • mm für aktuelle Minute (die Klein bemerken)
  • ss für aktuelle Sekunde

So zum Beispiel, wenn Sie nur das Datum ohne jede Zeit informat wollten Ion, würden Sie die folgende setzen, die 2012-03-25 zurückkehren würde:

var thisString = DateTime.Now.ToString("yyyy-MM-dd"); 

Dank

+0

((Microsoft.Office.Interop.Excel.Range) ExcelWorkSheet2.Cells [newFileRow, 1]). EntireColumn.ColumnWidth = date.Length; –

+0

Für zukünftige Referenz, können Sie einfach einen Kommentar zu Ihrer Frage hinzufügen und darauf vertrauen, dass wir es sehen werden, Sie müssen nicht den gleichen Kommentar zu jeder Antwort hinzufügen. – JMK

0

ich glaube, Sie Datums- und Uhrzeitformat und/oder Erweitern Sie Ihre Zelle ein bisschen möchten verkürzen. Bitte beziehen Sie sich auf this information on DateTime formatting.


Mehr: DateTime.Now.ToString() produziert in der Regel lange Schnur, so etwas wie "2012.03.25 19.26.26". Wenn dies etwas ist, das Sie anzeigen möchten, besteht die einzige Möglichkeit für Sie darin, Ihre Zelle/Spalte zu erweitern.

Andernfalls betrachten Sie eines von vielen Formaten, die Ihnen gut passen. Beispiel: DateTime.Now.ToString("MM-dd-yy")

+0

((Microsoft.Office.Interop.Excel.Range) ExcelWorkSheet2.Cells [newFileRow, 1]). EntireColumn.ColumnWidth = date.Length; –

Verwandte Themen