C#中关于CSV文件的写入和读取

/// <summary>
        /// 保存CSV文档
        /// </summary>
        /// <param name="filePathName">地址</param>
        /// <param name="rows">內容</param>
        /// <param name="append">是否覆蓋保存,false覆盖</param>
        public static void WriteCSV(string filePathName, List<string[]> rows, bool append)         
        { 
            StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
            foreach (string[] cells in rows)             
            {
                StringBuilder buffer = new StringBuilder();
                for (int i = 0; i < cells.Length; ++i)
                {
                    string str = cells[i].Replace("\"", "").Trim();
                    if (str == null)
                        str = "";
                    if(str.IndexOf(",")>-1){
                        str = "\""+str+"\"";
                    }
                    buffer.Append(str);
                    if (i != cells.Length - 1)
                        buffer.Append(quotechar);
                }
                fileWriter.WriteLine(buffer.ToString());             
            }
            fileWriter.Flush();             
            fileWriter.Close();
        }

---------------------------------------------------------------------------------------------------

/// <summary>
        /// 讀取文檔文件
        /// </summary>
        /// <param name="filePathName">地址</param>
        /// <returns>返回內容</returns>
        public static List<string[]> ReadCSV(string filePathName)
        {
            StreamReader fileReader = new StreamReader(filePathName, Encoding.Default);
            string rowStr = fileReader.ReadLine();
            // "a,1",b,c     // "\"a,1\",\"b,1,2\",\"c,cc\",ddd"
            List<string[]> rowList = new List<string[]>();
            while (rowStr != null) {
                List<string> cellVals = getStrCellVal(rowStr);
                string[] cells = new string[cellVals.Count];
                for (int i = 0; i < cellVals.Count; i++) {
                    cells[i] = cellVals[i];
                }
                rowList.Add(cells);
                rowStr = fileReader.ReadLine();
            }
            fileReader.Close();
            return rowList;
        }

private static List<string> getStrCellVal(string rowStr) {
            List<string> cellList = new List<string>();
            while (rowStr != null && rowStr.Length > 0)
            {
                string cellVal = "";
                if (rowStr.StartsWith("\""))
                {
                    rowStr = rowStr.Substring(1);
                    int i = rowStr.IndexOf("\",");
                    int j = rowStr.IndexOf("\" ,");
                    int k = rowStr.IndexOf("\"");
                    if (i < 0) i = j;
                    if (i < 0) i = k;
                    if (i > -1)
                    {
                        cellVal = rowStr.Substring(0, i);
                        if ((i + 2) < rowStr.Length)
                            rowStr = rowStr.Substring(i + 2).Trim();
                        else
                            rowStr = "";
                    }
                    else
                    {
                        cellVal = rowStr;
                        rowStr = "";
                    }
                }
                else
                {
                    int i = rowStr.IndexOf(",");
                    if (i > -1)
                    {
                        cellVal = rowStr.Substring(0, i);
                        if ((i + 1) < rowStr.Length)
                            rowStr = rowStr.Substring(i + 1).Trim();
                        else
                            rowStr = "";
                    }
                    else
                    {
                        cellVal = rowStr;
                        rowStr = "";
                    }
                }
                if (cellVal == "") cellVal = " ";
                cellList.Add(cellVal);
            }
            return cellList;
        }

------------------------------------------------------------

有点乱,凑合看

原文地址:https://www.cnblogs.com/ysydave/p/11669165.html

时间: 2024-08-30 07:22:13

C#中关于CSV文件的写入和读取的相关文章

在python中实现对文件的写入,读取,复制,批量重命名

1.写入内容至文件中 def write_file(): open_file = open("xxxx.txt","w") open_file.write("i want to open a file and write this.\n") open_file.close() write_file() 2.读取文件中的内容 #思路:1.以什么方式打开 2.读取文件 3.关闭文件 def read_file(): read_file = open(

iOS中 JSON格式文件的写入和读取

1.写入(本地) NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *path=[paths objectAtIndex:0];    NSString *Json_path=[path stringByAppendingPathComponent:@"JsonFile.json"];    //==写入文件    NSL

Spring Batch示例: 读取CSV文件并写入MySQL数据库

Spring Batch示例: 读取CSV文件并写入MySQL数据库 GitHub版本: https://github.com/kimmking/SpringBatchReferenceCN/blob/master/01_introduction/Spring_Batch_MySQL.md 原文链接: Reading and writing CVS files with Spring Batch and MySQL 原文作者: Steven Haines - 技术架构师 下载本教程的源代码: S

读取csv文件,写入oracle数据库

/* * @(#)DataParse.java 2014年4月28日 */ package com.yihaodian.sa.doData; import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.sql.Connection;import java.

CSV文件的写入(按行写入)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(按行写入) import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很多程序在处理数据时会遇到csv格式文件 #csv文件的写入(按行写入) def getSortedValues(row): sortedValues=[]#初始化为空list keys=row.keys() keys.sort() for key in keys: sortedValues.appe

文件的写入,读取和关闭

我们今天要学的知识是关于文件的写入,读取和关闭.读取写入比较重要,关闭了解一下就好. 1.读取某一行:当我们需要读取某一行字符的时候,我们可以使用readline这个方法,我们也可以对readline进行赋值,这样可以规定最多多去多少个字符.比如lsf文件的某一行的前五个字符是hello,我们输入命令:lsf.readlinr(5),得到的结果就是hello,如果我们想要读取全部行的话,可以使用命令:readlines. 2.写入行:写入行在这里我们使用的方法是writelines,这个方法接受

Spring Batch使用示例: 读取CSV文件并写入MySQL数据库

GitHub版本: https://github.com/kimmking/SpringBatchReferenceCN/blob/master/01_introduction/Spring_Batch_MySQL.md ------------ 编写批处理程序来处理GB级别数据量无疑是种海啸般难以面对的任务,但我们可以用Spring Batch将其拆解为小块小块的(chunk). Spring Batch 是Spring框架的一个模块,专门设计来对各种类型的文件进行批量处理. 本文先讲解一个简

[转]VC++中对文件的写入和读取

本文转自:http://blog.csdn.net/fanghb_1984/article/details/7425705 本文介绍两种方法对文件进行读取和写入操作:1.采用fstream类:2.采用CStdioFile类. CStdioFile继承自CFile,一个CStdioFile对象代表一个用运行时函数fopen 打开的C 运行时流式文件. C++中的fstream类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O.stream类有两个重要的运算符:插入器(<<)和析

numpy中的CSV文件

As we all know,we use numpy to do some data explore.CSV has a good point to get a lot data. so how can we get a data from CSV by numpy. NO.1 you can use file to open it. 这里的csv文件为泰坦尼克号的文件(此处是对于维度小于等于2) import csv filename = 'C:\Users\dzy520\Desktop\t