English 中文(简体)
MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 23 HOURS 57 MINUTES 16 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE
原标题:I want to read in a csv file to a .NET datatable with respect to data column datatypes

MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 23 HOURS 57 MINUTES 13 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE

            public static void Read(string FilePath, DataTable dataTable)
            {
                dataTable.Rows.Clear();
                StreamReader streamReader = new StreamReader(FilePath);

                string[] Headers = streamReader.ReadLine().Split( , );
                while (!streamReader.EndOfStream)
                {
                    string[] filefields = Regex.Split(streamReader.ReadLine(), ",(?=(?:[^"]*"[^"]*")*[^"]*$)");
                    DataRow dataRow = dataTable.NewRow();
                    for (int i = 0; i < Headers.Length; i++)
                    {
                        switch (Type.GetTypeCode(dataTable.Columns[i].DataType))
                        {
                            case TypeCode.Boolean:
                                dataRow[i]  = Boolean.Parse(filefields[i]); break;
                            case TypeCode.Byte:
                                dataRow[i] = Byte.Parse(filefields[i]); break;
                            case TypeCode.Char:
                                dataRow[i] = Char.Parse(filefields[i]);break;
                            case TypeCode.DateTime:
                                dataRow[i] = DateTime.Parse(filefields[i]); break;
                            case TypeCode.Decimal:
                                dataRow[i] = Decimal.Parse(filefields[i]); break;
                            case TypeCode.Double:
                                dataRow[i] = Double.Parse(filefields[i]); break;
                            case TypeCode.Int16:
                                dataRow[i] = Int16.Parse(filefields[i]); break;
                            case TypeCode.Int32:
                                dataRow[i] = Int32.Parse(filefields[i]); break;
                            case TypeCode.Int64:
                                dataRow[i] = Int64.Parse(filefields[i]); break;
                            case TypeCode.Object:
                                dataRow[i] = (object)filefields[i]; break;
                            case TypeCode.SByte:
                                dataRow[i] = SByte.Parse(filefields[i]); break;
                            case TypeCode.Single:
                                dataRow[i] = Single.Parse(filefields[i]); break;
                            case TypeCode.String:
                                dataRow[i] = filefields[i].ToString(); break;
                            case TypeCode.UInt16:
                                dataRow[i] = UInt16.Parse(filefields[i]);break;
                            case TypeCode.UInt32:
                                dataRow[i] = UInt32.Parse(filefields[i]);break;
                            case TypeCode.UInt64:
                                dataRow[i] = UInt64.Parse(filefields[i]); break;
                            default: break;
                        }
                    }
                    dataTable.Rows.Add(dataRow);
                }
            }

MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 23 HOURS 57 MINUTES 12 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE

问题回答

MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 23 HOURS 57 MINUTES 10 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE

public static void Read(string FilePath, DataTable dataTable)
            {
                dataTable.Rows.Clear();
                StreamReader streamReader = new StreamReader(FilePath);

                string[] Headers = streamReader.ReadLine().Split( , );
                while (!streamReader.EndOfStream)
                {
                    string[] filefields = Regex.Split(streamReader.ReadLine(), ",(?=(?:[^"]*"[^"]*")*[^"]*$)");
                    DataRow dataRow = dataTable.NewRow();
                    for (int i = 0; i < Headers.Length; i++)
                    {
                        DataColumn column = dataTable.Columns[i];
                        object parsedvalue = Convert.ChangeType(filefields[i], column.DataType);
                        dataRow[i] = parsedvalue;
                    }
                    dataTable.Rows.Add(dataRow);
                }
            }




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签