Csv文件基本的属性
csv文件可以在excel或者wps中以表格形式打开,本质上是每一列以,
逗号为分隔符的一种格式,在C#中操作可以把他当做普通txt文本读入,然后通过处理,
逗号分隔符来对数据进行处理转换。
在表格中打开:

在记事本中打开:

Csv读写方式
方式一:一次性读写
使用File.ReadAllLines
一次性读入。File.WriteAllLines
一次性写入。
这种方式适合csv文件内容不多的情况下使用。
示例:
- string path="data.csv";
- var lines = File.ReadAllLines(path).ToList();
完整的实现:
- /// <summary>
- /// 读取Csv,返回行集合
- /// </summary>
- /// <param name="path"></param>
- /// <param name="hasTitle"></param>
- /// <returns></returns>
- public static List<string> ReadCsv(string path, bool hasTitle)
- {
- if (!File.Exists(path))
- return new List<string>();
-
- var lines = File.ReadAllLines(path).ToList();
- if (hasTitle)
- {
- lines.RemoveAt(0);
- }
- return lines;
- }
方式二:使用文件流形式读写
使用StreamReader
,一行一行的读取文件中的内容,并且处理。写入类似
示例:
- using (StreamReader sr = new StreamReader(path))
- {
-
- string line;
- while ((line = sr.ReadLine()) != null)
- {
- //处理行数据
-
-
- }
- }
-
Csv文件读写DataTable类型
将CSV文件读入数据转成DataTable类型
将DataTable类型写入到Csv文件中去
- /// <summary>
- /// 以文件流形式将DataTable写入csv文件
- /// </summary>
- /// <param name="dt"></param>
- /// <param name="path"></param>
- /// <param name="hasTitle"></param>
- /// <returns></returns>
- public static bool WriteToCsvByDataTable(DataTable dt, string path, bool hasTitle = false)
- {
- using (StreamWriter sw = new StreamWriter(path))
- {
- //输出标题行(如果有)
- if (hasTitle)
- {
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- sw.Write(dt.Columns[i].ColumnName);
- if (i != dt.Columns.Count - 1)
- {
- sw.Write(",");
- }
- }
- sw.WriteLine();
- }
-
- //输出文件内容
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- sw.Write(dt.Rows[i][j].ToString());
- if (j != dt.Columns.Count - 1)
- {
- sw.Write(",");
- }
- }
- sw.WriteLine();
- }
- }
-
- return true;
- }
-
到此这篇关于C# Csv实现基本的读写和转换DataTable的文章就介绍到这了,更多相关C# Csv读写和转换DataTable内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!