C#:对csv文件的读写操作

由于excel有版本区分,读写的时候容易出问题,所以一般写好excel文件另存为*.csv格式,进行读写

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data.OleDb;
using System.Data;
using System.Windows.Forms;
//一个csv的读写操作类
namespace WindowsFormsApplication1
{
    public class CsvRw
    {

        public static DataTable OpenCSV(string filePath)
        {
            DataTable dt = new DataTable();
            FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            StreamReader sr = new StreamReader(fs, Encoding.Default);

            string strLine = "";
            //记录每行记录中的各字段内容
            string[] aryLine = null;
            string[] tableHead = null;
            //标示列数
            int columnCount = 0;
            //标示是否是读取的第一行
            bool IsFirst = true;

            int hangshu=0;

            //  逐行读取CSV中的数据
            while ((strLine = sr.ReadLine()) != null)
            {
                if (IsFirst == true)
                {
                    tableHead = strLine.Split(‘,‘);
                    IsFirst = false;
                    columnCount = tableHead.Length;
                    for (int i = 0; i < columnCount; i++)
                    {
                        tableHead[i] = tableHead[i].Replace("\"", "");
                        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].Replace("\"", "");
                    }
                    dt.Rows.Add(dr);
                }
                hangshu += 1;

                //Console.WriteLine(dt.Rows.Count);
            }

            MessageBox.Show(dt.Rows.Count.ToString()+"行数");
            //
            //if (aryLine != null && aryLine.Length > 0)
            //{
            //    dt.DefaultView.Sort = tableHead[2] + " " + "DESC";
            //}
            sr.Close();
            fs.Close();
            return dt;
        }

        /// <summary>
        /// 写入
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="fullFileName"></param>
        /// <returns></returns>
        public static Boolean SaveCSV(DataTable dt, string fullFileName)
        {
            Boolean r = false;
            FileStream fs = new FileStream(fullFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
            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++)
                {
                    data += dt.Rows[i][j].ToString();
                    if (j < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
            }
            sw.Close();
            fs.Close();

            r = true;
            return r;
        }

    }
}

原文地址:https://www.cnblogs.com/zbyglls/p/10528485.html

时间: 2024-11-09 03:52:01

C#:对csv文件的读写操作的相关文章

用Java对CSV文件进行读写操作

需要jar包:javacsv-2.0.jar 读操作 // 读取csv文件的内容 public static ArrayList<String> readCsv(String filepath) { File csv = new File(filepath); // CSV文件路径 csv.setReadable(true);//设置可读 csv.setWritable(true);//设置可写 BufferedReader br = null; try { br = new Buffered

python对csv文件的读写操作

python内置了csv模块,用它可以方便的操作csv文件. 1.写文件 (1)写文件的方法一 import csv # open 打开文件有多种模式,下面是常见的4种 # r:读数据,默认模式 # w:写数据,如果已有数据则会先清空 # a:向文件末尾追加数据 # x : 写数据,如果文件已存在则失败 # 第2至4种模式如果第一个参数指定的文件不存在,则会先创建一个空文件 with open('1.csv', 'w', newline='') as f: head = ['标题列1', '标题

Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)

日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beangroup> 3 <javabean> 4 <data name='code'>A001</data> 5 <data name='name'>

csv文件的读写

最近在搞一个比赛,经常要用到csv文件的读写,开始用的是Java,有CsvReader.CsvWriter包,读写的格式大致如下: File inFile = new File(inpath); FileInputStream fis = new FileInputStream(inFile); FileOutputStream fos = new FileOutputStream(outpath); CsvReader csvReader = new CsvReader(fis, Charse

使用shell脚本简单模拟对特定文件同时读写操作

使用shell脚本简单模拟对特定文件同时读写操作文件内容的格式:field1    ,       field2    , field3    ,       field4以,为分隔符,但是存在空格. 脚本用法如下: ./check_write_read.sh 10 输出结果: Thu Apr 27 19:59:44 CST 2017:Read operation finished 670 Thu Apr 27 19:59:44 CST 2017:Write operation finished

IO流文件的读写操作

字符流有两个抽象类:Writer   Reader.其对应子类FileWriter,FileReader可实现文件的读写操作 同样,字节流也有两个抽象类:InputStream OutputStream.其对应子类有FileInputStream,FileOutputStream可实现文件读写 IO流中的重要方法:read()方法返回-1,readLine方法返回null.用法列如:while((line=br.readLine())!=null).Scanne类中的hasNext()方法如果此

File --文件的读写操作

File --文件的读写操作------------------- 1. 通过数组实现对一组数据的写入 1 package day01; 2 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.io.RandomAccessFile; 6 7 /** 8 * 批量写入一组字节 9 * @author Administrator 10 * 11 */ 12 public class

【Python】Python对文件的读写操作

刚刚接触Python,感觉其对文件的操作还是很方便的.下面是我入门Python对文件操作的一个简单程序,希望对初学者有所帮助. test.py def processFile(inputFile, outputFile): #定义一个函数 fin = open(inputFile, 'r') #以读的方式打开文件 fout = open(outputFile, 'w') #以写得方式打开文件 for eachLine in fin: #读取文件的每一行 line = eachLine.strip

INI 文件的读写操作

在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static readonly string strFilePath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "App.ini";//INI文件路径 #endregion #region 私有方法 /// <summary> /