2015-08-25 17 views
8

Bu aptalca görünüyor, ancak değerlerimi excel içinde bir tarih olarak biçimlendirilmek yerine literal bir dize olarak yazmak için #/#### biçiminde değerlerimi alamadım. .excel hücre formatını "date like" verileriyle metin olarak tutun

ben excel yazmak için ClosedXML kullanma ve kullanıyorum şu:

// snip 
IXLRangeRow tableRow = tableRowRange.Row(1); 
tableRow.Cell(1).DataType = XLCellValues.Text; 
tableRow.Cell(1).Value = "2/1997"; 
// snip 

Ben hücrede 2/1/1997 olsun levha excel çıkış baktığımızda - İçeri metin olarak biçimi ayarlıyorum rağmen kod, excel sayfasında bir "Tarih" olarak alıyorum - Ben sağ tıklayarak hücre, biçim, biçim "tarih" görmek, hücre biçimlendirmek kontrol edin. Ben yerine benim çıktı olarak 35462 olsun

// snip 
IXLRangeRow tableRow = tableRowRange.Row(1); 
tableRow.Cell(1).Value = "2/1997"; 
tableRow.Cell(1).DataType = XLCellValues.Text; 
// snip 

:

Ben şeyleri değiştirin.

Sadece çalışma sayfasındaki 2/1997 tam değerin görüntülenmesini istiyorum. Lütfen nasıl düzeltileceğini belirtin.

cevap

20

bu

ws.Cell(rowCounter, colCounter).SetValue<string>(Convert.ToString(fieldValue)); 
deneyin Değil
+2

Bu benim için çalıştı ama herkes bunun neden işe yaradığını söyleyebilir mi ?? – jaredbaszler

+0

Ayrıca, "fieldValue" zaten bir dize olduğumu bilerek yukarıdaki kodu kısaltabilirdim: 'ws.Cell (rowCounter, colCounter) .SetValue (fieldValue);' – jaredbaszler

+1

(Bu dosya bir ClosedXML için Wiki. Cell.Value = kullanarak bir değer ayarlarsanız, her zaman sizin için değerleri otomatik olarak dönüştürür, böylece otomatik olarak dizeyi bir tarih olarak algılar ve dönüştürür (Excel, varsayılan olarak CSV dosyaları ile sık sık yaptığınız gibi). Ancak, cell.SetValue() özellikle bunu önler ve değer bir dizgeyse, Excel dosyasında bir dize kalır. –

2

düşünün:

tableRow.Cell(1).Value = "'2/1997"; 

Not tek tırnak.

+0

oldukça yakın - tek sorunum, F2'ye isabet edersem veya hücre üzerindeki formül çubuğuna girdiğimde, biçim "mmm/yyyy" biçiminde güncelleşir. Bunun hakkında bir fikrin var mı? – Kritner

1

ClosedXML yaklaşık emin, ama belki Range.NumberFormat (MSDN Link)

Örneğin

...

Range("A1").NumberFormat = "@" 

Ya

deneyin
Selection.NumberFormat = "#/####" 
0
ws.Cell(rowCounter, colCounter).Value="'"+Convert.ToString(fieldValue)); 
İlgili konular