将数据转换为csv时出现问题,尤其是格式日期为“ dd-MM-yyyy”。
public void Export_CSV(DataTable dt, string FileName, string Separator, string Path)
{
string path = HttpContext.Current.Server.MapPath("~/" + Path + "/" + FileName + ".csv");
StringBuilder sb = new StringBuilder();
string[] columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName).
ToArray();
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dt.Rows)
{
string[] fields = row.ItemArray.Select(field => field.ToString()).
ToArray();
sb.AppendLine(string.Join(",", fields));
}
File.WriteAllText(path, sb.ToString());
}
结果格式日期不是恒定的。它应该像“ dd-MM-yyyy”
您可以尝试设置CurrentInfo.CurrentCulture的默认DateTimeFormat,以便强制使用ToString吐出的默认DateTime格式。
我相信默认情况下.ToString()将产生与ShortString格式相关的d / MM / yyyy。
尝试在输出日期之前在代码中添加以下内容。
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
Thread.CurrentThread.CurrentCulture = culture;
要恢复到设置的内容,只需添加一些代码以首先存储原始值,然后在方法末尾进行重置
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
var originalShortDatePattern = culture.DateTimeFormat.ShortDatePattern
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
Thread.CurrentThread.CurrentCulture = culture;
...
Your code
...
culture.DateTimeFormat.ShortDatePattern = originalShortDatePattern ;
Thread.CurrentThread.CurrentCulture = culture;
值得一试
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句