示例#1
0
        private static DataTable ParseCSV(DataTable table, TextReader stream, bool headers)
        {
            CsvStream csv = new CsvStream(stream);

            string[] row = csv.GetNextRow();
            if (row == null)
            {
                return(null);
            }
            if (headers)
            {
                foreach (string header in row)
                {
                    if (header != null && header.Length > 0 && !table.Columns.Contains(header))
                    {
                        table.Columns.Add(header, typeof(string));
                    }
                    else
                    {
                        table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                    }
                }
                row = csv.GetNextRow();
            }
            while (row != null)
            {
                while (row.Length > table.Columns.Count)
                {
                    table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                }
                table.Rows.Add(row);
                row = csv.GetNextRow();
            }
            return(table);
        }
示例#2
0
 public static DataTable Parse(TextReader stream, bool headers)
 {
     DataTable table = new DataTable();
     CsvStream csv = new CsvStream(stream);
     string[] row = csv.GetNextRow();
     if (row == null)
         return null;
     if (headers)
     {
         foreach (string header in row)
         {
             if (!String.IsNullOrEmpty(header) && !table.Columns.Contains(header))
                 table.Columns.Add(header, typeof(string));
             else
                 table.Columns.Add(GetNextColumnHeader(table), typeof(string));
         }
         row = csv.GetNextRow();
     }
     while (row != null)
     {
         while (row.Length > table.Columns.Count)
             table.Columns.Add(GetNextColumnHeader(table), typeof(string));
         table.Rows.Add(row);
         row = csv.GetNextRow();
     }
     return table;
 }
示例#3
0
        public static DataTable Parse(TextReader stream, CsvHeadersAction Headers, char delimiter)
        {
            DataTable table = new DataTable();
            CsvStream csv   = new CsvStream(stream);

            string[] row = csv.GetNextRow(delimiter);
            if (row == null)
            {
                return(null);
            }
            if (Headers == CsvHeadersAction.SkipHeaderLine)
            {
                row = csv.GetNextRow(delimiter);
            }
            if (Headers == CsvHeadersAction.UseAsColumnNames)
            {
                //foreach (string header in row)
                for (int i = 0; i < row.Length; i++)
                {
                    if (row[i] != null && row[i].Length > 0 && !table.Columns.Contains(row[i]))
                    {
                        table.Columns.Add(row[i], typeof(string));
                    }
                    else
                    {
                        table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                    }
                }
                row = csv.GetNextRow(delimiter);
            }
            while (row != null)
            {
                while (row.Length > table.Columns.Count)
                {
                    table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                }
                table.Rows.Add(row);
                row = csv.GetNextRow(delimiter);
            }
            stream.Close();
            stream.Dispose();
            return(table);
        }
示例#4
0
文件: CsvParser.cs 项目: giagiigi/WE
        public static DataTable Parse(TextReader stream, bool headers)
        {
            var stringResourceImporter = new StringResourceImporter();

            var table = stringResourceImporter.BuildEmptyStringResourceDataTable();

            CsvStream csv = new CsvStream(stream);

            string[] row = csv.GetNextRow();
            if (row == null)
            {
                return(null);
            }
            if (headers)
            {
                foreach (string header in row)
                {
                    if (header != null && header.Length > 0 && !table.Columns.Contains(header))
                    {
                        table.Columns.Add(header, typeof(string));
                    }
                    else
                    {
                        table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                    }
                }
                row = csv.GetNextRow();
            }
            while (row != null)
            {
                while (row.Length > table.Columns.Count)
                {
                    table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                }
                table.Rows.Add(row);
                row = csv.GetNextRow();
            }
            return(table);
        }
示例#5
0
        public static DataTable Parse(TextReader stream, bool headers)
        {
            var table = new DataTable();
            var csv   = new CsvStream(stream);
            var row   = csv.GetNextRow();

            if (row == null)
            {
                return(null);
            }

            if (headers)
            {
                foreach (var header in row)
                {
                    if (!string.IsNullOrEmpty(header) && !table.Columns.Contains(header))
                    {
                        table.Columns.Add(header, typeof(string));
                    }
                    else
                    {
                        table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                    }
                }
                row = csv.GetNextRow();
            }

            while (row != null)
            {
                while (row.Count > table.Columns.Count)
                {
                    table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                }

                table.Rows.Add(row);
                row = csv.GetNextRow();
            }
            return(table);
        }
示例#6
0
        public static DataTable Parse(TextReader stream, bool headers)
        {
            DataTable table   = new DataTable();
            CsvStream stream2 = new CsvStream(stream);

            string[] nextRow = stream2.GetNextRow();
            if (nextRow == null)
            {
                return(null);
            }
            if (headers)
            {
                foreach (string str in nextRow)
                {
                    if (!string.IsNullOrEmpty(str) && !table.Columns.Contains(str))
                    {
                        table.Columns.Add(str, typeof(string));
                    }
                    else
                    {
                        table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                    }
                }
                nextRow = stream2.GetNextRow();
            }
            while (nextRow != null)
            {
                while (nextRow.Length > table.Columns.Count)
                {
                    table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                }
                table.Rows.Add(nextRow);
                nextRow = stream2.GetNextRow();
            }
            return(table);
        }
        public static Hashtable StringSplitCsv(
            [DekiScriptParam("comma separated values")] string text
            )
        {
            ArrayList rows        = new ArrayList();
            int       columncount = 0;
            CsvStream csv         = new CsvStream(new StringReader(text));

            string[] row = null;
            do
            {
                row = csv.GetNextRow();
                if (row != null)
                {
                    rows.Add(new ArrayList(row));
                    columncount = Math.Max(columncount, row.Length);
                }
            } while(row != null);


            // ensure that each row has columncount values
            for (int i = 0; i < rows.Count; ++i)
            {
                ArrayList r = (ArrayList)rows[i];
                while (r.Count < columncount)
                {
                    r.Add(string.Empty);
                }
            }

            // set values in result object
            Hashtable result = new Hashtable(StringComparer.OrdinalIgnoreCase);

            result.Add("rowcount", rows.Count);
            result.Add("columncount", columncount);
            result.Add("values", rows);
            return(result);
        }
示例#8
0
文件: Parser.cs 项目: pirzada/sinapse
 public static DataTable Parse(TextReader stream, CsvHeadersAction Headers, char delimiter)
 {
     DataTable table = new DataTable();
     CsvStream csv = new CsvStream(stream);
     string[] row = csv.GetNextRow(delimiter);
     if (row == null)
         return null;
     if (Headers == CsvHeadersAction.SkipHeaderLine)
     {
         row = csv.GetNextRow(delimiter);
     }
     if (Headers == CsvHeadersAction.UseAsColumnNames)
     {
         //foreach (string header in row)
         for (int i = 0;i<row.Length;i++)
         {
             if (row[i] != null && row[i].Length > 0 && !table.Columns.Contains(row[i]))
                 table.Columns.Add(row[i], typeof(string));
             else
                 table.Columns.Add(GetNextColumnHeader(table), typeof(string));
         }
         row = csv.GetNextRow(delimiter);
     }
     while (row != null)
     {
         while (row.Length > table.Columns.Count)
             table.Columns.Add(GetNextColumnHeader(table), typeof(string));
         table.Rows.Add(row);
         row = csv.GetNextRow(delimiter);
     }
     stream.Close();
     stream.Dispose();
     return table;
 }
        public static Hashtable StringSplitCsv(
            [DekiScriptParam("comma separated values")] string text
        ) {
            ArrayList rows = new ArrayList();
            int columncount = 0;
            CsvStream csv = new CsvStream(new StringReader(text));

            string[] row = null;
            do {
                row = csv.GetNextRow();
                if(row != null) {
                    rows.Add(new ArrayList(row));
                    columncount = Math.Max(columncount, row.Length);
                }
            } while(row != null);


            // ensure that each row has columncount values
            for(int i = 0; i < rows.Count; ++i) {
                ArrayList r = (ArrayList)rows[i];
                while(r.Count < columncount) {
                    r.Add(string.Empty);
                }
            }

            // set values in result object
            Hashtable result = new Hashtable(StringComparer.OrdinalIgnoreCase);
            result.Add("rowcount", rows.Count);
            result.Add("columncount", columncount);
            result.Add("values", rows);
            return result;
        }
示例#10
0
        public static DataTable Parse(Stream strm, bool headers, int RowsToParse, int HeaderLineNum)
        {
            int       aHeaderLineNum = HeaderLineNum;
            DataTable table          = new DataTable();

            TextReader stream = new StreamReader(strm);

            // Get Delimiter row
            String hdr = stream.ReadLine();

            // Skip lines before header
            while (aHeaderLineNum > 1)
            {
                hdr = stream.ReadLine();
                aHeaderLineNum--;
            }

            List <int> lst = new List <int>();

            Delimiter = ',';
            int commapos = hdr.IndexOf(','); if (commapos != -1)
            {
                lst.Add(commapos);
            }
            int semicolonpos = hdr.IndexOf(';'); if (semicolonpos != -1)
            {
                lst.Add(semicolonpos);
            }
            int fencepos = hdr.IndexOf('|'); if (fencepos != -1)
            {
                lst.Add(fencepos);
            }
            int tabpos = hdr.IndexOf('\t'); if (tabpos != -1)

            {
                lst.Add(tabpos);
            }

            // First found delimiter will be CSV delimiter
            if (lst.Count > 0)
            {
                Delimiter = hdr[lst.Min()];
            }


            //stream.Close();
            strm.Seek(0, SeekOrigin.Begin);
            stream = new StreamReader(strm);

            CsvStream csv = new CsvStream(stream, Delimiter);

            string[] row = csv.GetNextRow();

            // Skip lines before header
            aHeaderLineNum = HeaderLineNum;
            while (aHeaderLineNum > 1)
            {
                row = csv.GetNextRow();
                aHeaderLineNum--;
            }

            if (row == null)
            {
                return(null);
            }
            if (headers)
            {
                foreach (string header in row)
                {
                    if (header != null && header.Length > 0 && !table.Columns.Contains(header))
                    {
                        table.Columns.Add(header.Trim(), typeof(string));
                    }
                    else
                    {
                        table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                    }
                }
                row = csv.GetNextRow();
            }

            int counter = RowsToParse;

            while (row != null)
            {
                while (row.Length > table.Columns.Count)
                {
                    table.Columns.Add(GetNextColumnHeader(table), typeof(string));
                }
                table.Rows.Add(row);
                row = csv.GetNextRow();

                if (RowsToParse > 0)
                {
                    counter--;
                    if (counter == 0)
                    {
                        break;
                    }
                }
            }

            stream.Close();

            return(table);
        }