双击excel之后,只有格式才能在excel中应用于npoi的C#

我有一个要求 需求 NPOI单元格格式为“MM / dd / yy”,当用户点击该特定单元格时,应显示如图所示的完整值。

当我尝试手动,它工作绝对好,但是当我通过代码申请。 这是行不通的。

我附上以下示例代码以供参考。 所以你可以指导我寻求可能的解决scheme。 我将非常感谢您的帮助和支持。 提前致谢。

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; 

将单元格的date格式设置为MM/dd/yy ,然后在单元格中设置完整date。 单元格应显示date为MM/dd/yy但显示单元格被选中时的完整date。

试试这个代码:

 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); } 

好吧,从我所了解的你所需要的,这应该做的伎俩:

比方说,你想添加date和时间单元格A1,这是我如何去了解它,它的工作原理:

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

之后,你应该留下你的细胞只显示date,在细胞内,你应该有时间。 希望这可以帮助。