码迷,mamicode.com
首页 > Windows程序 > 详细

C#读取csv格式文件

时间:2014-10-30 14:57:58      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   os   ar   for   sp   strong   文件   

一、CSV文件规则

 

1 开头是不留空,以行为单位。
2 可含或不含列名,含列名则居文件第一行。
3 一行数据不跨行,无空行。
4 以半角逗号(即,)作分隔符,列为空也要表达其存在。
5 列内容如存在半角逗号(即,)则用半角引号(即‘,‘)将该字段值包含起来。
6 列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
7 文件读写时引号,逗号操作规则互逆。
8 内码格式不限,可为 ASCII、Unicode 或者其他。
9 不支持特殊字符
 
 
 
二、C#读取csv文件的方法
 
 
C# 代码   复制
bubuko.com,布布扣bubuko.com,布布扣bubuko.com,布布扣
//读CSV文件类,读取指定的CSV文件,可以导出DataTable
bubuko.com,布布扣
    public class CsvStreamReader
bubuko.com,布布扣
    {
bubuko.com,布布扣        private ArrayList rowAL;         //行链表,CSV文件的每一行就是一个链
bubuko.com,布布扣        private string fileName;        //文件名
bubuko.com,布布扣
bubuko.com,布布扣        private Encoding encoding;        //编码
bubuko.com,布布扣
bubuko.com,布布扣        public CsvStreamReader()
bubuko.com,布布扣        {
bubuko.com,布布扣            this.rowAL = new ArrayList();
bubuko.com,布布扣            this.fileName = "";
bubuko.com,布布扣            this.encoding = Encoding.Default;
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        ///
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="fileName">文件名,包括文件路径</param>
bubuko.com,布布扣        public CsvStreamReader(string fileName)
bubuko.com,布布扣        {
bubuko.com,布布扣            this.rowAL = new ArrayList();
bubuko.com,布布扣            this.fileName = fileName;
bubuko.com,布布扣            this.encoding = Encoding.Default;
bubuko.com,布布扣            LoadCsvFile();
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        ///
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="fileName">文件名,包括文件路径</param>
bubuko.com,布布扣        /// <param name="encoding">文件编码</param>
bubuko.com,布布扣        public CsvStreamReader(string fileName, Encoding encoding)
bubuko.com,布布扣        {
bubuko.com,布布扣            this.rowAL = new ArrayList();
bubuko.com,布布扣            this.fileName = fileName;
bubuko.com,布布扣            this.encoding = encoding;
bubuko.com,布布扣            LoadCsvFile();
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 文件名,包括文件路径
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        public string FileName
bubuko.com,布布扣        {
bubuko.com,布布扣            set
bubuko.com,布布扣            {
bubuko.com,布布扣                this.fileName = value;
bubuko.com,布布扣                LoadCsvFile();
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 文件编码
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣
bubuko.com,布布扣        public Encoding FileEncoding
bubuko.com,布布扣        {
bubuko.com,布布扣            set
bubuko.com,布布扣            {
bubuko.com,布布扣                this.encoding = value;
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 获取行数
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        public int RowCount
bubuko.com,布布扣        {
bubuko.com,布布扣            get
bubuko.com,布布扣            {
bubuko.com,布布扣                return this.rowAL.Count;
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 获取列数
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        public int ColCount
bubuko.com,布布扣        {
bubuko.com,布布扣            get
bubuko.com,布布扣            {
bubuko.com,布布扣                int maxCol;
bubuko.com,布布扣
bubuko.com,布布扣                maxCol = 0;
bubuko.com,布布扣                for (int i = 0; i < this.rowAL.Count; i++)
bubuko.com,布布扣                {
bubuko.com,布布扣                    ArrayList colAL = (ArrayList)this.rowAL[i];
bubuko.com,布布扣
bubuko.com,布布扣                    maxCol = (maxCol > colAL.Count) ? maxCol : colAL.Count;
bubuko.com,布布扣                }
bubuko.com,布布扣
bubuko.com,布布扣                return maxCol;
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 获取某行某列的数据
bubuko.com,布布扣
bubuko.com,布布扣        /// row:行,row = 1代表第一行
bubuko.com,布布扣
bubuko.com,布布扣        /// col:列,col = 1代表第一列  
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        public string this[int row, int col]
bubuko.com,布布扣        {
bubuko.com,布布扣            get
bubuko.com,布布扣            {
bubuko.com,布布扣                //数据有效性验证
bubuko.com,布布扣
bubuko.com,布布扣                CheckRowValid(row);
bubuko.com,布布扣                CheckColValid(col);
bubuko.com,布布扣                ArrayList colAL = (ArrayList)this.rowAL[row - 1];
bubuko.com,布布扣
bubuko.com,布布扣                //如果请求列数据大于当前行的列时,返回空值
bubuko.com,布布扣
bubuko.com,布布扣                if (colAL.Count < col)
bubuko.com,布布扣                {
bubuko.com,布布扣                    return "";
bubuko.com,布布扣                }
bubuko.com,布布扣
bubuko.com,布布扣                return colAL[col - 1].ToString();
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 根据最小行,最大行,最小列,最大列,来生成一个DataTable类型的数据
bubuko.com,布布扣
bubuko.com,布布扣        /// 行等于1代表第一行
bubuko.com,布布扣
bubuko.com,布布扣        /// 列等于1代表第一列
bubuko.com,布布扣
bubuko.com,布布扣        /// maxrow: -1代表最大行
bubuko.com,布布扣        /// maxcol: -1代表最大列
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        public DataTable this[int minRow, int maxRow, int minCol, int maxCol]
bubuko.com,布布扣        {
bubuko.com,布布扣            get
bubuko.com,布布扣            {
bubuko.com,布布扣                //数据有效性验证
bubuko.com,布布扣
bubuko.com,布布扣                CheckRowValid(minRow);
bubuko.com,布布扣                CheckMaxRowValid(maxRow);
bubuko.com,布布扣                CheckColValid(minCol);
bubuko.com,布布扣                CheckMaxColValid(maxCol);
bubuko.com,布布扣                if (maxRow == -1)
bubuko.com,布布扣                {
bubuko.com,布布扣                    maxRow = RowCount;
bubuko.com,布布扣                }
bubuko.com,布布扣                if (maxCol == -1)
bubuko.com,布布扣                {
bubuko.com,布布扣                    maxCol = ColCount;
bubuko.com,布布扣                }
bubuko.com,布布扣                if (maxRow < minRow)
bubuko.com,布布扣                {
bubuko.com,布布扣                    throw new Exception("最大行数不能小于最小行数");
bubuko.com,布布扣                }
bubuko.com,布布扣                if (maxCol < minCol)
bubuko.com,布布扣                {
bubuko.com,布布扣                    throw new Exception("最大列数不能小于最小列数");
bubuko.com,布布扣                }
bubuko.com,布布扣                DataTable csvDT = new DataTable();
bubuko.com,布布扣                int i;
bubuko.com,布布扣                int col;
bubuko.com,布布扣                int row;
bubuko.com,布布扣
bubuko.com,布布扣                //增加列
bubuko.com,布布扣
bubuko.com,布布扣                for (i = minCol; i <= maxCol; i++)
bubuko.com,布布扣                {
bubuko.com,布布扣                    csvDT.Columns.Add(i.ToString());
bubuko.com,布布扣                }
bubuko.com,布布扣                for (row = minRow; row <= maxRow; row++)
bubuko.com,布布扣                {
bubuko.com,布布扣                    DataRow csvDR = csvDT.NewRow();
bubuko.com,布布扣
bubuko.com,布布扣                    i = 0;
bubuko.com,布布扣                    for (col = minCol; col <= maxCol; col++)
bubuko.com,布布扣                    {
bubuko.com,布布扣                        csvDR[i] = this[row, col];
bubuko.com,布布扣                        i++;
bubuko.com,布布扣                    }
bubuko.com,布布扣                    csvDT.Rows.Add(csvDR);
bubuko.com,布布扣                }
bubuko.com,布布扣
bubuko.com,布布扣                return csvDT;
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 检查行数是否是有效的
bubuko.com,布布扣
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="col"></param>  
bubuko.com,布布扣        private void CheckRowValid(int row)
bubuko.com,布布扣        {
bubuko.com,布布扣            if (row <= 0)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("行数不能小于0");
bubuko.com,布布扣            }
bubuko.com,布布扣            if (row > RowCount)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("没有当前行的数据");
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 检查最大行数是否是有效的
bubuko.com,布布扣
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="col"></param>  
bubuko.com,布布扣        private void CheckMaxRowValid(int maxRow)
bubuko.com,布布扣        {
bubuko.com,布布扣            if (maxRow <= 0 && maxRow != -1)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("行数不能等于0或小于-1");
bubuko.com,布布扣            }
bubuko.com,布布扣            if (maxRow > RowCount)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("没有当前行的数据");
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 检查列数是否是有效的
bubuko.com,布布扣
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="col"></param>  
bubuko.com,布布扣        private void CheckColValid(int col)
bubuko.com,布布扣        {
bubuko.com,布布扣            if (col <= 0)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("列数不能小于0");
bubuko.com,布布扣            }
bubuko.com,布布扣            if (col > ColCount)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("没有当前列的数据");
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 检查检查最大列数是否是有效的
bubuko.com,布布扣
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="col"></param>  
bubuko.com,布布扣        private void CheckMaxColValid(int maxCol)
bubuko.com,布布扣        {
bubuko.com,布布扣            if (maxCol <= 0 && maxCol != -1)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("列数不能等于0或小于-1");
bubuko.com,布布扣            }
bubuko.com,布布扣            if (maxCol > ColCount)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("没有当前列的数据");
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 载入CSV文件
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        private void LoadCsvFile()
bubuko.com,布布扣        {
bubuko.com,布布扣            //对数据的有效性进行验证
bubuko.com,布布扣
bubuko.com,布布扣            if (this.fileName == null)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("请指定要载入的CSV文件名");
bubuko.com,布布扣            }
bubuko.com,布布扣            else if (!File.Exists(this.fileName))
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("指定的CSV文件不存在");
bubuko.com,布布扣            }
bubuko.com,布布扣            else
bubuko.com,布布扣            {
bubuko.com,布布扣            }
bubuko.com,布布扣            if (this.encoding == null)
bubuko.com,布布扣            {
bubuko.com,布布扣                this.encoding = Encoding.Default;
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            StreamReader sr = new StreamReader(this.fileName, this.encoding);
bubuko.com,布布扣            string csvDataLine;
bubuko.com,布布扣
bubuko.com,布布扣            csvDataLine = "";
bubuko.com,布布扣            while (true)
bubuko.com,布布扣            {
bubuko.com,布布扣                string fileDataLine;
bubuko.com,布布扣
bubuko.com,布布扣                fileDataLine = sr.ReadLine();
bubuko.com,布布扣                if (fileDataLine == null)
bubuko.com,布布扣                {
bubuko.com,布布扣                    break;
bubuko.com,布布扣                }
bubuko.com,布布扣                if (csvDataLine == "")
bubuko.com,布布扣                {
bubuko.com,布布扣                    csvDataLine = fileDataLine;//GetDeleteQuotaDataLine(fileDataLine);
bubuko.com,布布扣                }
bubuko.com,布布扣                else
bubuko.com,布布扣                {
bubuko.com,布布扣                    csvDataLine += "\\r\\n" + fileDataLine;//GetDeleteQuotaDataLine(fileDataLine);
bubuko.com,布布扣                }
bubuko.com,布布扣                //如果包含偶数个引号,说明该行数据中出现回车符或包含逗号
bubuko.com,布布扣                if (!IfOddQuota(csvDataLine))
bubuko.com,布布扣                {
bubuko.com,布布扣                    AddNewDataLine(csvDataLine);
bubuko.com,布布扣                    csvDataLine = "";
bubuko.com,布布扣                }
bubuko.com,布布扣            }
bubuko.com,布布扣            sr.Close();
bubuko.com,布布扣            //数据行出现奇数个引号
bubuko.com,布布扣            if (csvDataLine.Length > 0)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("CSV文件的格式有错误");
bubuko.com,布布扣            }
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 获取两个连续引号变成单个引号的数据行
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="fileDataLine">文件数据行</param>
bubuko.com,布布扣        /// <returns></returns>
bubuko.com,布布扣        private string GetDeleteQuotaDataLine(string fileDataLine)
bubuko.com,布布扣        {
bubuko.com,布布扣            return fileDataLine.Replace("\\"\\"", "\\"");
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 判断字符串是否包含奇数个引号
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="dataLine">数据行</param>
bubuko.com,布布扣        /// <returns>为奇数时,返回为真;否则返回为假</returns>
bubuko.com,布布扣        private bool IfOddQuota(string dataLine)
bubuko.com,布布扣        {
bubuko.com,布布扣            int quotaCount;
bubuko.com,布布扣            bool oddQuota;
bubuko.com,布布扣
bubuko.com,布布扣            quotaCount = 0;
bubuko.com,布布扣            for (int i = 0; i < dataLine.Length; i++)
bubuko.com,布布扣            {
bubuko.com,布布扣                if (dataLine[i] == ‘\\"‘)
bubuko.com,布布扣                {
bubuko.com,布布扣                    quotaCount++;
bubuko.com,布布扣                }
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            oddQuota = false;
bubuko.com,布布扣            if (quotaCount % 2 == 1)
bubuko.com,布布扣            {
bubuko.com,布布扣                oddQuota = true;
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            return oddQuota;
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 判断是否以奇数个引号开始
bubuko.com,布布扣
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="dataCell"></param>
bubuko.com,布布扣        /// <returns></returns>
bubuko.com,布布扣        private bool IfOddStartQuota(string dataCell)
bubuko.com,布布扣        {
bubuko.com,布布扣            int quotaCount;
bubuko.com,布布扣            bool oddQuota;
bubuko.com,布布扣
bubuko.com,布布扣            quotaCount = 0;
bubuko.com,布布扣            for (int i = 0; i < dataCell.Length; i++)
bubuko.com,布布扣            {
bubuko.com,布布扣                if (dataCell[i] == ‘\\"‘)
bubuko.com,布布扣                {
bubuko.com,布布扣                    quotaCount++;
bubuko.com,布布扣                }
bubuko.com,布布扣                else
bubuko.com,布布扣                {
bubuko.com,布布扣                    break;
bubuko.com,布布扣                }
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            oddQuota = false;
bubuko.com,布布扣            if (quotaCount % 2 == 1)
bubuko.com,布布扣            {
bubuko.com,布布扣                oddQuota = true;
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            return oddQuota;
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 判断是否以奇数个引号结尾
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="dataCell"></param>
bubuko.com,布布扣        /// <returns></returns>
bubuko.com,布布扣        private bool IfOddEndQuota(string dataCell)
bubuko.com,布布扣        {
bubuko.com,布布扣            int quotaCount;
bubuko.com,布布扣            bool oddQuota;
bubuko.com,布布扣
bubuko.com,布布扣            quotaCount = 0;
bubuko.com,布布扣            for (int i = dataCell.Length - 1; i >= 0; i--)
bubuko.com,布布扣            {
bubuko.com,布布扣                if (dataCell[i] == ‘\\"‘)
bubuko.com,布布扣                {
bubuko.com,布布扣                    quotaCount++;
bubuko.com,布布扣                }
bubuko.com,布布扣                else
bubuko.com,布布扣                {
bubuko.com,布布扣                    break;
bubuko.com,布布扣                }
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            oddQuota = false;
bubuko.com,布布扣            if (quotaCount % 2 == 1)
bubuko.com,布布扣            {
bubuko.com,布布扣                oddQuota = true;
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            return oddQuota;
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 加入新的数据行
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="newDataLine">新的数据行</param>
bubuko.com,布布扣        private void AddNewDataLine(string newDataLine)
bubuko.com,布布扣        {
bubuko.com,布布扣            //System.Diagnostics.Debug.WriteLine("NewLine:" + newDataLine);
bubuko.com,布布扣
bubuko.com,布布扣            ////return;
bubuko.com,布布扣
bubuko.com,布布扣            ArrayList colAL = new ArrayList();
bubuko.com,布布扣            string[] dataArray = newDataLine.Split(‘,‘);
bubuko.com,布布扣            bool oddStartQuota;        //是否以奇数个引号开始
bubuko.com,布布扣
bubuko.com,布布扣            string cellData;
bubuko.com,布布扣
bubuko.com,布布扣            oddStartQuota = false;
bubuko.com,布布扣            cellData = "";
bubuko.com,布布扣            for (int i = 0; i < dataArray.Length; i++)
bubuko.com,布布扣            {
bubuko.com,布布扣                if (oddStartQuota)
bubuko.com,布布扣                {
bubuko.com,布布扣                    //因为前面用逗号分割,所以要加上逗号
bubuko.com,布布扣                    cellData += "," + dataArray[i];
bubuko.com,布布扣                    //是否以奇数个引号结尾
bubuko.com,布布扣                    if (IfOddEndQuota(dataArray[i]))
bubuko.com,布布扣                    {
bubuko.com,布布扣                        colAL.Add(GetHandleData(cellData));
bubuko.com,布布扣                        oddStartQuota = false;
bubuko.com,布布扣                        continue;
bubuko.com,布布扣                    }
bubuko.com,布布扣                }
bubuko.com,布布扣                else
bubuko.com,布布扣                {
bubuko.com,布布扣                    //是否以奇数个引号开始
bubuko.com,布布扣
bubuko.com,布布扣                    if (IfOddStartQuota(dataArray[i]))
bubuko.com,布布扣                    {
bubuko.com,布布扣                        //是否以奇数个引号结尾,不能是一个双引号,并且不是奇数个引号
bubuko.com,布布扣
bubuko.com,布布扣                        if (IfOddEndQuota(dataArray[i]) && dataArray[i].Length > 2 && !IfOddQuota(dataArray[i]))
bubuko.com,布布扣                        {
bubuko.com,布布扣                            colAL.Add(GetHandleData(dataArray[i]));
bubuko.com,布布扣                            oddStartQuota = false;
bubuko.com,布布扣                            continue;
bubuko.com,布布扣                        }
bubuko.com,布布扣                        else
bubuko.com,布布扣                        {
bubuko.com,布布扣
bubuko.com,布布扣                            oddStartQuota = true;
bubuko.com,布布扣                            cellData = dataArray[i];
bubuko.com,布布扣                            continue;
bubuko.com,布布扣                        }
bubuko.com,布布扣                    }
bubuko.com,布布扣                    else
bubuko.com,布布扣                    {
bubuko.com,布布扣                        colAL.Add(GetHandleData(dataArray[i]));
bubuko.com,布布扣                    }
bubuko.com,布布扣                }
bubuko.com,布布扣            }
bubuko.com,布布扣            if (oddStartQuota)
bubuko.com,布布扣            {
bubuko.com,布布扣                throw new Exception("数据格式有问题");
bubuko.com,布布扣            }
bubuko.com,布布扣            this.rowAL.Add(colAL);
bubuko.com,布布扣        }
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣        /// <summary>
bubuko.com,布布扣        /// 去掉格子的首尾引号,把双引号变成单引号
bubuko.com,布布扣        /// </summary>
bubuko.com,布布扣        /// <param name="fileCellData"></param>
bubuko.com,布布扣        /// <returns></returns>
bubuko.com,布布扣        private string GetHandleData(string fileCellData)
bubuko.com,布布扣        {
bubuko.com,布布扣            if (fileCellData == "")
bubuko.com,布布扣            {
bubuko.com,布布扣                return "";
bubuko.com,布布扣            }
bubuko.com,布布扣            if (IfOddStartQuota(fileCellData))
bubuko.com,布布扣            {
bubuko.com,布布扣                if (IfOddEndQuota(fileCellData))
bubuko.com,布布扣                {
bubuko.com,布布扣                    return fileCellData.Substring(1, fileCellData.Length - 2).Replace("\\"\\"", "\\""); //去掉首尾引号,然后把双引号变成单引号
bubuko.com,布布扣                }
bubuko.com,布布扣                else
bubuko.com,布布扣                {
bubuko.com,布布扣                    throw new Exception("数据引号无法匹配" + fileCellData);
bubuko.com,布布扣                }
bubuko.com,布布扣            }
bubuko.com,布布扣            else
bubuko.com,布布扣            {
bubuko.com,布布扣                //考虑形如""    """"      """"""   
bubuko.com,布布扣                if (fileCellData.Length > 2 && fileCellData[0] == ‘\\"‘)
bubuko.com,布布扣                {
bubuko.com,布布扣                    fileCellData = fileCellData.Substring(1, fileCellData.Length - 2).Replace("\\"\\"", "\\""); //去掉首尾引号,然后把双引号变成单引号
bubuko.com,布布扣                }
bubuko.com,布布扣            }
bubuko.com,布布扣
bubuko.com,布布扣            return fileCellData;
bubuko.com,布布扣        }
bubuko.com,布布扣    }
bubuko.com,布布扣

C#读取csv格式文件

标签:style   http   io   os   ar   for   sp   strong   文件   

原文地址:http://www.cnblogs.com/gc2013/p/4062368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!