如何限制Excel的默认时间格式

我正在将数据导出到Excel工作表。 我有一个名为totalWorkingHours的字段,它将小时和分钟保存为“hh:mm”,例如“119:20”。 但是,excel将其作为时间戳记读取并添加秒数:“119:20:00”。 我想删除秒,值应该只显示为“119:20”。

以下代码返回出口到Excel的内存stream:

public static MemoryStream GetCSV(string[] fieldsToExpose, DataTable data) { MemoryStream stream = new MemoryStream(); using (var writer = new StreamWriter(stream)) { for (int i = 0; i < fieldsToExpose.Length; i++) { if (i != 0) { writer.Write(","); } writer.Write("\""); writer.Write(fieldsToExpose[i].Replace("\"", "\"\"")); writer.Write("\""); } writer.Write("\n"); foreach (DataRow row in data.Rows) { for (int i = 0; i < fieldsToExpose.Length; i++) { if (i != 0) { writer.Write(","); } writer.Write("\""); if (row[fieldsToExpose[i]].GetType() == typeof(DateTime)) { var Val = (DateTime)row[fieldsToExpose[i]]; string output = Val.ToString("dd-MMM-yyyy hh:mm"); if (Val.TimeOfDay == new TimeSpan(0, 0, 0)) { output = Val.ToString("dd-MMM-yyyy"); } writer.Write(output.Replace("\"", "\"\"")); } else { writer.Write(row[fieldsToExpose[i]].ToString().Replace("\"", "\"\"")); } writer.Write("\""); } writer.Write("\n"); } } return stream; } 

你可以看到这里的价值

这里,它是如何看起来在Excel中

我认为这样做的好方法是在string之前加上一个空格,比如'110:20' ,这样可以工作,excel会以string格式读取,不会将其转换为date格式。 希望你能得到解决scheme