zoukankan      html  css  js  c++  java
  • 按格式读取csv文件内容

        string path = @"C:Userskeen_DownloadsuploaduploadUpload20140701141934_export.csv";
        ImportDataTable(path);
    
            //2014-07-01
            //get csv file to datatable
            private static DataTable ImportDataTable(string filepath)
            {
                DataTable mydt = new DataTable("myTableName");
                mydt.Columns.Add("Data ID", System.Type.GetType("System.String"));
                mydt.Columns.Add("Field Name", System.Type.GetType("System.String"));
                mydt.Columns.Add("New Value", System.Type.GetType("System.String"));
                DataRow mydr;
                using (System.IO.StreamReader mysr = new System.IO.StreamReader(filepath))
                {
                    int data;
                    char current;
                    StringBuilder text = new StringBuilder();
    
                    IDictionary<int, List<string>> results = new Dictionary<int, List<string>>();
                    bool isInYinHao = false; ;
                    int lineId = 1;
                    int index = 0;
                    while (true)
                    {
                        data = mysr.Read();
                        if (data != -1)
                        {
                            current = (char)data;
                            if (current == '"')
                            {
                                if (isInYinHao)
                                {
                                    isInYinHao = false;
                                }
                                else
                                {
                                    if (index > 0)
                                    {
                                        text.Append(current);
                                    }
    
                                    isInYinHao = true;
                                }
                            }
                            else if (current == ',')
                            {
                                if (isInYinHao)
                                {
                                    text.Append(current);
                                }
                                else
                                {
    
                                    SaveResult(results, lineId, text);
                                    index = 0;
                                    continue;
                                }
                            }
                            else if (current == '
    ')
                            {
                                if (isInYinHao)
                                {
                                    text.Append(current);
                                }
                            }
                            else if (current == '
    ')
                            {
                                if (isInYinHao)
                                {
                                    text.Append(current);
                                }
                                else
                                {
                                    SaveResult(results, lineId, text);
                                    index = 0;
                                    lineId++;
                                    continue;
                                }
                            }
                            else if (current == '')
                            {
                            }
                            else
                            {
                                text.Append(current);
                            }
    
                            index++;
                        }
                        else
                        {
                            //Read to file end.
                            SaveResult(results, lineId, text);
                            break;
                        }
                    }
    
                    foreach (int id in results.Keys)
                    {
                        mydr = mydt.NewRow();
                        for (int i = 0; i < results[id].Count; i++)
                        {
                            if (i > 2)
                            {
                                break;
                            }
    
                            mydr[i] = results[id][i];
                        }
    
                        mydt.Rows.Add(mydr);
                    }
    
                }
    
                return mydt;
            }
            private static void SaveResult(IDictionary<int, List<string>> results, int lineId, StringBuilder text)
            {
                if (!results.ContainsKey(lineId))
                {
                    results.Add(lineId, new List<string>());
                }
    
                results[lineId].Add(text.ToString());
                text.Remove(0, text.Length);
            }
  • 相关阅读:
    Servlet-获取页面的元素的值的方式以及区别
    Http请求-get和post的区别
    Servlet-xml配置简介以及url-pattern简介
    javaweb目录结构简介
    Servlet-生命周期简介
    tomcat-四种运行模式和三种部署模式(优化)
    命名空间System.IO
    Dictionary 字典
    导出-以虚拟表的形式获取数据源
    导入excel-uploadify+npoi
  • 原文地址:https://www.cnblogs.com/kennyliu/p/3839911.html
Copyright © 2011-2022 走看看