C#读取csv文件
来源:互联网 发布:淘宝ppr外丝活接 编辑:程序博客网 时间:2024/05/22 01:31
/// <summary> /// 将DataTable中数据写入到CSV文件中 /// </summary> /// <param name="dt">提供保存数据的DataTable</param> /// <param name="fileName">CSV的文件路径</param> public static bool SaveCSV(DataTable dt, string fullPath) { try { FileInfo fi = new FileInfo(fullPath); if (!fi.Directory.Exists) { fi.Directory.Create(); } FileStream fs = new FileStream(fullPath, System.IO.FileMode.Create, System.IO.FileAccess.Write); //StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default); StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8); string data = ""; //写出列名称 for (int i = 0; i < dt.Columns.Count; i++) { data += "\"" + dt.Columns[i].ColumnName.ToString() + "\""; if (i < dt.Columns.Count - 1) { data += ","; } } sw.WriteLine(data); //写出各行数据 for (int i = 0; i < dt.Rows.Count; i++) { data = ""; for (int j = 0; j < dt.Columns.Count; j++) { string str = dt.Rows[i][j].ToString(); str = string.Format("\"{0}\"", str); data += str; if (j < dt.Columns.Count - 1) { data += ","; } } sw.WriteLine(data); } sw.Close(); fs.Close(); return true; } catch { return false; } } /// <summary> /// 读取CSV文件到DataTable中 /// </summary> /// <param name="filePath">CSV的文件路径</param> /// <returns></returns> public static DataTable ReadCSV(string filePath) { DataTable dt = new DataTable(); int lineNumber = 0; using (CsvFileReader reader = new CsvFileReader(filePath)) { CsvRow row = new CsvRow(); while (reader.ReadRow(row)) { if (0 == lineNumber) { foreach (string s in row) { dt.Columns.Add(s.Replace("\"", "")); } } else { int index = 0; DataRow dr = dt.NewRow(); foreach (string s in row) { dr[index] = s.Replace("\"", ""); index++; } dt.Rows.Add(dr); } lineNumber++; } } return dt; } public class CsvRow : List<string> { public string LineText { get; set; } } public class CsvFileReader : StreamReader { public CsvFileReader(Stream stream) : base(stream) { } public CsvFileReader(string filename) : base(filename) { } /// <summary> /// Reads a row of data from a CSV file /// </summary> /// <param name="row"></param> /// <returns></returns> public bool ReadRow(CsvRow row) { row.LineText = ReadLine(); if (String.IsNullOrEmpty(row.LineText)) return false; int pos = 0; int rows = 0; while (pos < row.LineText.Length) { string value; // Special handling for quoted field if (row.LineText[pos] == '"') { // Skip initial quote pos++; // Parse quoted value int start = pos; while (pos < row.LineText.Length) { // Test for quote character if (row.LineText[pos] == '"') { // Found one pos++; // If two quotes together, keep one // Otherwise, indicates end of value if (pos >= row.LineText.Length || row.LineText[pos] != '"') { pos--; break; } } pos++; } value = row.LineText.Substring(start, pos - start); value = value.Replace("\"\"", "\""); } else { // Parse unquoted value int start = pos; while (pos < row.LineText.Length && row.LineText[pos] != ',') pos++; value = row.LineText.Substring(start, pos - start); } // Add field to list if (rows < row.Count) row[rows] = value; else row.Add(value); rows++; // Eat up to and including next comma while (pos < row.LineText.Length && row.LineText[pos] != ',') pos++; if (pos < row.LineText.Length) pos++; } // Delete any unused items while (row.Count > rows) row.RemoveAt(rows); // Return true if any columns read return (row.Count > 0); } }
阅读全文
0 0
- C#读取CSV文件
- c#读取csv文件
- C# 读取CSV文件
- C#读取csv文件
- C#读取CSV文件的方法
- C# 读取 CSV 文件,简易实现
- C#读取CSV文件的方法
- C#读取csv文件内容到DataTable
- C#读取CSV文件到DataTable
- C# 读取EXCEL(CSV文件方式)
- C#读取CSV,Excel,Txt文件,删除文件,拷贝文件
- C#完美读取CSV
- C# 两种读取CSV文件方法实例
- c# 读取csv文件的三种方式
- C#读取CSV文件并保存进数据库
- 如何读取csv文件
- CSV文件直接读取
- java读取CSV文件
- tomcat 7更换log4j管理日志(官网文档)
- Vue中使用vux配置详解
- 测试投入度量元的选择
- nipype处理核磁数据(二)——FSL、FreeSurfer的安装
- 400人秘密在此研发Alexa 走进亚马逊剑桥研发中心
- C#读取csv文件
- 使用ioctl获取磁盘大小
- 【SpringMVC】使用@InitBind来解决字符串转日期类型(十三)
- 《剑指offer》刷题笔记(时间效率):数组中出现次数超过一半的数字
- vue2引入外部js文件(以hammer.js为例)
- Android数据库两种操作方式介绍: SQLite与ORMLite
- disable_irq与disable_irq_nosync
- MYSQL 插入性能优化
- WEB前端 -- 块元素与内联元素