2015-08-25 5 views
8

यह मूर्खतापूर्ण प्रतीत होता है, लेकिन मैं #/#### के प्रारूप में अपने मान प्राप्त करने में सक्षम नहीं हूं, एक्सेल के भीतर दिनांक के रूप में स्वरूपित होने के बजाय शाब्दिक स्ट्रिंग के रूप में लिखने के लिए ।"दिनांक की तरह" डेटा के साथ टेक्स्ट के रूप में एक्सेल सेल प्रारूप रखें

मैं ClosedXML उपयोग कर रहा हूँ उत्कृष्टता प्राप्त करने में लिखने के लिए, और का उपयोग कर निम्न:

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

उत्पादन को देखते हुए उत्कृष्टता चादर मैं सेल 2/1/1997 में मिलता है - भले ही मैं में पाठ के रूप में प्रारूप सेट कर रहा हूं कोड, मैं एक्सेल शीट में "डेट" के रूप में इसे प्राप्त कर रहा हूं - मैंने प्रारूप के रूप में "दिनांक" को देखकर, सेल पर क्लिक करके सेल को प्रारूपित करके चेक किया।

अगर मैं करने के लिए चीजों को बदलना:

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

मैं बजाय मेरी आउटपुट के रूप में 35462 मिलता है।

मैं वर्कशीट पर प्रदर्शित होने के लिए 2/1997 का अपना शाब्दिक मूल्य चाहता हूं। कृपया सही करने के बारे में सलाह दें।

उत्तर

20

इस

ws.Cell(rowCounter, colCounter).SetValue<string>(Convert.ToString(fieldValue)); 
कोशिश
+2

यह मेरे लिए काम करता था लेकिन क्या कोई इस पर काम कर सकता है कि यह क्यों काम करता है ?? – jaredbaszler

+0

मैं यह जानने के लिए ऊपर दिए गए कोड को भी ट्रिम करने में सक्षम था कि मेरा 'फ़ील्ड वैल्यू' पहले से ही एक स्ट्रिंग था: 'ws.Cell (rowCounter, colCounter) .SetValue (fieldValue); ' – jaredbaszler

+1

@jaredbaszler यह एक दस्तावेज है ClosedXML के लिए विकी। यदि आप सेल का उपयोग करके एक मान निर्धारित करते हैं। वैल्यू = ब्लाह यह हमेशा आपके लिए मानों का स्वचालित रूपांतरण करता है, इसलिए यह स्वचालित रूप से स्ट्रिंग को एक तिथि के रूप में पहचानता है और इसे परिवर्तित करता है (एक्सेल जैसे ही डिफ़ॉल्ट रूप से एक्सेल सीएसवी फाइलों के साथ करता है)। हालांकि सेल.SetValue() विशेष रूप से इससे बचाता है और यदि मान एक स्ट्रिंग है, तो यह Excel फ़ाइल में एक स्ट्रिंग बनी हुई है। –

2

पर विचार करें:

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

नोट एकल उद्धरण।

+0

यह बहुत करीब है - इसके साथ मेरा एकमात्र मुद्दा यह है कि यदि मैं F2 दबाता हूं या सेल पर सूत्र बार दर्ज करता हूं, तो प्रारूप को "mmm/yyyy" प्रारूप में दिनांक में अपडेट किया जाता है। उस पर कोई विचार? – Kritner

1

ClosedXML से के बारे में सुनिश्चित नहीं हैं, लेकिन शायद Range.NumberFormat (MSDN Link)

उदाहरण के लिए ...

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

या

कोशिश
Selection.NumberFormat = "#/####" 
0
ws.Cell(rowCounter, colCounter).Value="'"+Convert.ToString(fieldValue)); 
संबंधित मुद्दे