Monday, 22 December 2014

csv file to DataTable in C#

  private static object GetDataTabletFromCSVFile(string csv_file_path)
        {
            DataTable csvData = new DataTable();

            try
            {

                using (TextFieldParser csvReader = new TextFieldParser(csv_file_path))
                {
                    csvReader.SetDelimiters(new string[] { "," });
                    csvReader.HasFieldsEnclosedInQuotes = true;
                    string[] colFields = csvReader.ReadFields();
                    foreach (string column in colFields)
                    {
                        DataColumn datecolumn = new DataColumn(column);
                        datecolumn.AllowDBNull = true;
                        csvData.Columns.Add(datecolumn);
                    }
                    bool isInvoiceMissed = false, isBaseAmountMissed = false;
                    while (!csvReader.EndOfData)
                    {
                        string[] fieldData = csvReader.ReadFields();

                        if (string.IsNullOrEmpty(fieldData[0].ToString()) || fieldData[0].ToString() == "0")
                            isInvoiceMissed = true;

                        if (string.IsNullOrEmpty(fieldData[21].ToString()))
                            isBaseAmountMissed = true;

                        //Making empty value as null
                        for (int i = 0; i < fieldData.Length; i++)
                        {
                            if (fieldData[i] == "")
                            {
                                fieldData[i] = null;
                            }
                        }
                        csvData.Rows.Add(fieldData);
                    }
                    if (isInvoiceMissed && !isBaseAmountMissed)
                        return 1;//"Invoice is missing in Excel files";
                    else if (!isInvoiceMissed && isBaseAmountMissed)
                        return 2;//"Base amount is missing in Excel files";
                    else if (isInvoiceMissed && isBaseAmountMissed)
                        return 3;
                    else
                        return csvData;
                }
            }
            catch (Exception ex)
            {
            }
            return csvData;
        }

No comments:

Post a Comment