//1、将数据保存成csv文件
public bool SaveCsv(DataTable dt)
{
dt.TableName = "test";
string tmpPath = "F:\\UpTemp";
if (!Directory.Exists(tmpPath))
Directory.CreateDirectory(tmpPath);
tmpPath = Path.Combine(tmpPath, "test.csv");//csv文件目录
string csv = DataTableToCsv(dt);
if (File.Exists(tmpPath))
File.Delete(tmpPath);
File.WriteAllText(tmpPath, csv);
}
//将datatable转换成csv格式
private string DataTableToCsv(DataTable table)
{
//以半角逗号(即,)作分隔符,列为空也要表达其存在。
//列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。
//列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
StringBuilder sb = new StringBuilder();
DataColumn colum;
foreach (DataRow row in table.Rows)
{
for (int i = 0; i < table.Columns.Count; i++)
{
colum = table.Columns[i];
if (i != 0) sb.Append(",");
if (colum.DataType == typeof(string) && row[colum].ToString().Contains(","))
{
sb.Append("\"" + row[colum].ToString().Replace("\"", "\"\"") + "\"");
}
else sb.Append(row[colum].ToString());
}
sb.AppendLine();
}
return sb.ToString();
}
//2、读取csv文件
private DataTable GetData()
{
DataTable dt= new DataTable();
string filePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "test.csv";//csv文件地址
FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.UTF8);
string strLine = "";
string[] aryLine = null;
string[] tableHead = null;
int columnCount = 0;
bool IsFirst = true;
while ((strLine = sr.ReadLine()) != null)
{
if (IsFirst == true)
{
tableHead = strLine.Split(',');
IsFirst = false;
columnCount = tableHead.Length;
for (int i = 0; i < columnCount; i++)
{
DataColumn dc = new DataColumn(tableHead[i]);
dt.Columns.Add(dc);
}
}
else
{
aryLine = strLine.Split(',');
DataRow dr = dt.NewRow();
for (int j = 0; j < columnCount; j++)
{
dr[j] = aryLine[j];
}
dt.Rows.Add(dr);
}
}
sr.Close();
fs.Close();
return dt;
}
C#操作csv文件
最新推荐文章于 2025-06-27 11:09:38 发布
本文详细介绍了如何使用C#语言高效地读取、写入和操作CSV文件,包括利用内置库和第三方库的方法,以及处理大型CSV文件的最佳实践。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印


5228

被折叠的 条评论
为什么被折叠?



