c# - 如何限制excel采用默认时间格式

标签 c# excel

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

以下代码返回内存流,然后将其导出到 excel:

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

U can see the value coming here

Here, how it looks in excel

最佳答案

我认为解决这个问题的好方法是在字符串前添加一个空格,例如 ' 110:20',这样可以工作,excel 会以字符串格式读取它并且不会转换它迄今为止的格式。希望你能得到解决方案

关于c# - 如何限制excel采用默认时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39769294/

相关文章:

c# - UserControl 中的 wpf 绑定(bind)集合属性

c# - Parallel.Invoke 什么时候有用?

c# - MVVM: View 导航无法正常工作

mysql - 如何将 Gridview 导出到 Excel,在本地工作但通过 IIS 部署时不工作

c# - 无法在 datagridview 中的单元格离开事件中获取当前单元格值

c# - 使用 svcutil.exe 为多个 WCF 服务创建代理类的错误/警告

c# - 如何在 C# 中将 double 值转换为 DateTime?

ios - 如何使用 Objective-C iOS 读取 excel 文件?

arrays - 如何在 VBA 中重新保存锯齿状数组(数组中的数组)?

excel - 间接行Excel地址