在 C# 的 npoi 中双击 excel 只有格式被应用到 excel

After double click over excel only format is getting applied over excel in npoi in C#

我有一个要求 其中 NPOI 单元格值的格式为 "MM/dd/yy" 并且当用户单击该特定单元格时,它应该显示完整的值,如下所示图片.

当我尝试手动执行时,它工作得很好,但是当我通过代码应用时。没用。

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

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;

好的,据我了解您的需要,这应该可以解决问题:

假设您要将日期和时间添加到单元格 A1,这是我的做法并且有效:

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

在此之后,您的单元格应该只显示日期,并且单元格内应该还有时间。 希望这有帮助。

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

试试这个代码:

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

请检查cell.SetCellValue的数据类型。

  • 对于 currency dataformatter,数据类型将为 double cell.SetCellValue(double).
  • 对于日期,它将是日期,
  • 等等

cell.SetCellValue(String) 可能会导致您的问题。