如何在Excel中使用EPPlus将基于string的时间转换为hh:mm格式?

我需要我的excel输出格式为HH:mm的时间列。

我的代码如下:

ws.Cells[rowNumber, 11].Style.Numberformat.Format = "hh:mm"; string start = row.R_HourStart.ToString("HH:mm:ss"); ws.Cells[rowNumber, 11].Value = start; 

但是当我在Excel中打开文件时,单元显示“10:10:00”。

当我在公式栏中插入文本并单击input时,单元格文本更改为“10:10”,这是我想要的。

我也试过使用:

 ws.Cells[rowNumber, 11].Style.Numberformat.Format = "hh:mm"; string start = row.R_HourStart.ToString("HH:mm:ss"); ws.Cells[rowNumber, 11].LoadFromText(start); 

我在单元格中显示“10:10”,但公式​​栏显示今天10点10分的完整date。

另外,我试了一下:

 ws.Cells[rowNumber, 12].Style.Numberformat.Format = "hh:mm"; ws.Cells[rowNumber, 12].Value = row.R_HourEnd; 

在单元格中显示“10:10”,但公式​​栏将整个date和时间显示为“22/08/2014 10:10:00”。

你能把你的时间转换成TimeSpan吗? 这对我工作:

 var package = new ExcelPackage(new FileInfo("text.xlsx")); var sheet = package.Workbook.Worksheets.Add("Sheet 1"); var someTime = "10:10:00"; var timeSpan = TimeSpan.Parse(someTime); sheet.Cells[1, 1].Value = timeSpan; sheet.Column(1).Style.Numberformat.Format = "hh:mm"; package.Save(); 

我有同样的问题,这是因为我的数据表是所有的string。 在我用更新的值replace了值之后,格式化工作正常。

 for (int row = 1; row <= lastRow; row++) { DateTime dt; if (DateTime.TryParse(worksheet.Cells[row, colWithDates]?.Value?.ToString() ?? string.Empty, out dt)) { worksheet.Cells[row, 1].Value = dt; worksheet.Cells[row, 1].Style.Numberformat.Format = "yyyy-mm-dd"; } TimeSpan ts; if (TimeSpan.TryParse(worksheet.Cells[row, columnWithTimes]?.Value?.ToString() ?? string.Empty, out ts)) { worksheet.Cells[row, 5].Value = ts; worksheet.Cells[row, 5].Style.Numberformat.Format = "hh:mm"; } }