segunda-feira, 20 de julho de 2015

CsvToDataTable

using System.Data;
using System.IO;

namespace Lapuinka.Utils
{
    ///
    /// Método CsvToDataTable.
    ///
    public class CsvToDataTable
    {
        ///
        /// Método converte dataTable em CSV.
        ///
        /// Path do arquivo.
        /// Primeira linha é cabeçalho.
        /// Retorna um datatable.
        public static DataTable Convert(string file, bool isRowOneHeader)
        {
            var csvDataTable = new DataTable();

            var csvData = File.ReadAllLines(file);

            if (csvData.Length == 0)
            {
                return null;
            }

            var headings = csvData[0].Split(';');

            var index = 0;

            if (!isRowOneHeader)
            {
                for (var i = 0; i < headings.Length; i++)
                {
                    csvDataTable.Columns.Add("col" + (i + 1), typeof(string));
                }
            }
            else
            {
                index = 1;
                for (var i = 0; i < headings.Length; i++)
                {
                    headings[i] = headings[i].Replace(" ", "_");
                    csvDataTable.Columns.Add(headings[i], typeof(string));
                }
            }

            for (var i = index; i < csvData.Length; i++)
            {
                var row = csvDataTable.NewRow();

                for (var j = 0; j < headings.Length; j++)
                {
                    row[j] = csvData[i].Split(';')[j];
                }

                csvDataTable.Rows.Add(row);
            }

            return csvDataTable;
        }
    }
}


Postar um comentário