如何在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"; } }