2017-02-21 2 views
2

Ich habe eine Anforderung, die requirement wo NPOI Zelle Wert ist im Format von "MM/TT/JJ" und wenn Benutzer auf diese bestimmte Zelle klicken, Es sollte vollständigen Wert wie im Bild gezeigt zeigen.Nach dem Doppelklick auf Excel Excel Format wird nur über Excel in NPOI in C#

Wenn ich manuell versuche, funktioniert es absolut gut, aber wenn ich über Code bewerben. Es funktioniert nicht.

Ich füge folgenden Beispielcode als Referenz an. So können Sie mich für eine mögliche Lösung führen. Ich werde Ihre Hilfe und Unterstützung sehr zu schätzen wissen. Vielen Dank im Voraus.

string value = "02/17/2017 10:10:10"; 
DateTime datetime; 
SimpleDateFormat dateFormat = new SimpleDateFormat ("MM/dd/yy"); 
DateTime dt = Convert.ToDateTime(value); 
var dateString = dateFormat.Format(dt, CultureInfo.InvariantCulture); 
if (DateTime.TryParseExact(dateString.ToString(), "MM/dd/yy",  CultureInfo.InvariantCulture, DateTimeStyles.None, out datetime)) 
{ 
     cell.SetCellValue(datetime.Date); 
} 
else 
{ 
     cell.SetCellValue(value); 
} 

//For styling 
var dateTypecontentStyle = workbook.CreateCellStyle(); 
dateTypecontentStyle.DataFormat = dataFormatCustom.GetFormat("MM/dd/yy"); 
cell.CellStyle = dateTypecontentStyle; 
+0

ich mir das richtig verstanden bin nicht sicher, versuchen Sie das Datum und die Zeit auf eine bestimmte Zelle anzuwenden, und es funktioniert nicht? –

+0

Ja, Voraussetzung ist, wenn ich auf Excel-Zelle klicke, sollte es Datum sowie Zeit auch zeigen. Der Rohwert, den ich erhalte, ist ein vollständiges Datum mit der Zeit. Ich muss dieses Datum formatieren und so anzeigen, dass standardmäßig nur das Format "MM/TT/JJ" angezeigt wird, aber wenn der Benutzer darauf klickt, sollte der Wert in "MM/JJ/TT HH: MM: SS" wie im Bild gezeigt angezeigt werden über. –

Antwort

1

Legen Sie das Datumsformat der Zelle auf MM/dd/yy fest, und legen Sie das vollständige Datum in der Zelle fest. Die Zelle sollte das Datum als MM/dd/yy anzeigen, aber das vollständige Datum anzeigen, wenn die Zelle ausgewählt ist.

diesen Code Versuchen:

DateTime dateTest = DateTime.ParseExact("02/17/2017 10:10:10", "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

using (FileStream fs = new FileStream(@"C:\temp\test.xlsx", FileMode.Create, FileAccess.Write)) 
{ 
    IWorkbook workbook = new XSSFWorkbook(); 
    ISheet sheet = workbook.CreateSheet("sheet"); 

    IRow row = sheet.CreateRow(0); 

    ICell cell = row.CreateCell(0); 
    ICellStyle cellStyle = workbook.CreateCellStyle(); 
    cellStyle.DataFormat = workbook.CreateDataFormat().GetFormat("MM/dd/yy"); 
    cell.CellStyle = cellStyle; 
    cell.SetCellValue(dateTest); 

    workbook.Write(fs); 
} 
+0

Danke @krlzlx .. Ich habe auch etwas ähnliches versucht und es hat für mich funktioniert. –

+0

Gern geschehen. Immer froh zu helfen. Sie können diese Antwort validieren, wenn das Problem gelöst wurde. – krlzlx

0

Ok so von dem, was ich verstehe, was Sie brauchen, das den Trick tun sollten:

Lassen Sie uns sagen Sie das Datum und die Zeit hinzugefügt werden soll Zelle A1, hier ist, wie ich es ging und es funktionierte :

xl.range cellA1 = yourWorksheet.Cells[1,1]; 
cellA1.Formula = "=NOW()"; 
CellA1.Value = CellA1.Value; 
CellA1.NumberFormat = "m/d/yyyy"; 

Danach sollten Sie mit Ihrer Zelle nur das Datum angezeigt werden, und innerhalb der Zelle sollten Sie auch die Zeit haben. Hoffe, das hilft.

+0

Vielen Dank für die Beantwortung meiner Frage, aber ich habe eine Frage, die Sie in Bezug auf NPOI basierte Excel-Formatierung sprechen. Weil ich die NPOI-Bibliothek zum Erstellen und Formatieren von Excel verwende. Abgesehen von obigem Beispiel habe ich versucht, einfachen Wert zu geben und dann Stil wie unten zu setzen, aber es hat nicht funktioniert. Es wird sehr geschätzt, wenn Sie mich interm von NPOI aktualisieren können. dateTypecontentStyle.DataFormat = dataFormatCustom.GetFormat ("MM/TT/JJ"); Zelle.CellStyle = dateTypecontentStyle; –

+0

Ich habe NPOI noch nie benutzt, aber ich habe schnell etwas Syntax studiert, meine beste Wette wäre etwas wie: 1) Deklarieren der Zelle die du brauchst 2) Die Formel darin putten 3) setze den Zellenwert auf gleich dem Zellenwert 4) dann gehe mit dem syntax ein getFormat ("m/d/yyyy"); Ich habe hier Informationen gefunden: http://poi.apache.org/spreadsheet/quick-guide.html Ich denke, die Antworten, die Sie benötigen, finden Sie unter "Bedingte Formatierung" und "So erstellen Sie Zellen/Wie Sie Datumszellen erstellen" Ich glaube nicht, dass ich mehr nutzen kann als das, aber wenn ich mir etwas vorstellen kann, werde ich es veröffentlichen. –