如何使用EPPlus在excel中将基于字符串的时间转换为hh:mm格式

本文关键字:转换 时间 hh 格式 mm 字符串 EPPlus 何使用 excel | 更新日期: 2023-09-27 18:25:07

我需要我的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"。

当我在公式栏中插入文本并单击enter时,单元格文本将更改为"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。

此外,我尝试过:

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

它在单元格中显示"10:10",但公式栏将整个日期和时间显示为"22/08/2014 10:10:00"。

如何使用EPPlus在excel中将基于字符串的时间转换为hh:mm格式

您能将时间转换为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();

我遇到了同样的问题,这是因为我的DataTable都是字符串。在我用paresed值替换了这些值之后,格式化效果很好。

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