读写CSV文件

时间:2023-03-08 22:20:15
             var allFiles = Directory.GetFiles(@"D:\uploadpdf", "*.csv");
string dataIsNull = @"D:\dataisnull.txt";
string matchLog = @"D:\matchLog.txt";
foreach (var filePath in allFiles)
{
DataTable dt = new DataTable();
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
StreamReader streamReader = new StreamReader(fileStream);
//记录每次读取的一行记录
string strLine = string.Empty;
//记录每行记录中的各字段的内容
string[] aryLine = null;
string[] tableHead = null;
//标示列数
int columCount = ;
//标示是否是读取的第一行
bool isFirst = true;
Console.Out.WriteLine("");
StringBuilder headBuilder = new StringBuilder();
//逐行读取CSV中的数据
while ((strLine = streamReader.ReadLine()) != null)
{
if (isFirst)
{
tableHead = strLine.Split(',');
isFirst = false;
columCount = tableHead.Length;
//创建列
foreach (var head in tableHead)
{
DataColumn column = new DataColumn(head);
dt.Columns.Add(column);
headBuilder.AppendFormat("{0}\t\t\t", head);
}
if (headBuilder.Length != )
{
using (StreamWriter sw = File.AppendText(matchLog))
{
sw.WriteLine(headBuilder.ToString());
}
}
}
else
{
aryLine = strLine.Split(',');
DataRow row = dt.NewRow();
if (aryLine.Length == columCount)
{
for (int i = ; i < columCount; i++)
{
row[i] = aryLine[i];
}
}
dt.Rows.Add(row);
}
}
if (aryLine != null && aryLine.Length > )
{
dt.DefaultView.Sort = tableHead[] + " asc";
}
streamReader.Close();
fileStream.Close();
if (dt.Rows.Count == )
{
//OutputLog(dataIsNull, string.Format("{0} data is null.", filePath));
continue;
}
StringBuilder mpAttributesLog = new StringBuilder(); foreach (DataRow row in dt.Rows)
{
//var values = row.ItemArray;
//foreach (var head in tableHead)
//{
// mpAttributesLog.AppendFormat("{0}\t\t\t", row[head]);
//}
mpAttributesLog.Append(string.Join("\t\t\t", row.ItemArray));
if (mpAttributesLog.Length != )
{
using (StreamWriter sw = File.AppendText(matchLog))
{
sw.WriteLine(mpAttributesLog.ToString());
mpAttributesLog.Clear();
}
}
}
}