我有一个我需要操作的CSV文件,操作它很好,直到它写入CSV文件然后它缺少字符串的最后字符。我不知道为什么,因为当我遍历字符串列表时它显示最后2个字符,但是当我打开CSV文件时,最后2个字符不存在。
我正在操作的CSV文件看起来像..
FirstName, Phone, Date, Appointment Time
dan, 123-456-7890, 12/1/2014, 1030
mary, 123-456-7890, 12/2/2014, 100
所以,我修改它看起来像这样
FirstName, Phone, Date, Appointment Time
dan, 123-456-7890, 12/1/2014 10:30 am
mary, 123-456-7890, 12/2/2014 1:00 pm
但是当它写入CSV文件时,am / pm被省略。
代码是
static void Main(string[] args)
{
string[] readData = File.ReadAllLines(@"C:\TestArea\Data extraction.csv");
List<string> finishedData = new List<string>(readData);
finishedData.RemoveAt(0);
List<string> allData = new List<string>();
foreach (var a in finishedData)
{
int lastIndex;
lastIndex = a.LastIndexOf(',');
string unformattedTime = a.Substring(lastIndex + 1);
string formatTime = string.Empty;
if (unformattedTime.Length < 4)
{
string hour = Convert.ToString(unformattedTime).Substring(0, 1);
string minute = Convert.ToString(unformattedTime).Substring(1, 2);
formatTime = hour + ":" + minute;
}
else
{
string hour = Convert.ToString(unformattedTime).Substring(0, 2);
string minute = Convert.ToString(unformattedTime).Substring(2, 2);
formatTime = hour + ":" + minute;
}
string finishedLine = a.Remove(lastIndex) + " " + DateTime.Parse(formatTime).ToShortTimeString().ToLower();
//Console.WriteLine(finishedLine);
allData.Add(finishedLine);
}
foreach (String s in allData)
Console.WriteLine(s);
File.WriteAllLines(@"C:\PIA\Test.csv", allData);
Console.ReadLine();
}
答案 0 :(得分:0)
问题可能出在DateTime.Parse
。您需要传递IFormatProvider
作为第二个参数。
答案 1 :(得分:0)
由于您的文件将由计算机系统使用,因此数据在Excel中看起来不太正常并不重要。唯一重要的是文件的实际内容采用系统所期望的格式。
Excel可能会模糊底层格式,因为它会尝试猜测数据类型是什么,并尝试猜测应该显示数据类型的格式。