por Bruno de Andrade

Converter CSV para DataSet em ASP.NET / C#

Código para converter dados de um arquivo .csv em um DataSet

public static DataSet CsvToDataSet()
{
    //Arquivo CSV
    string strFile = HttpContext.Current.Server.MapPath("~/contatos.csv");
    //Separador do seu arquivo CSV 
    char separator = ';';
    //Se a primeira linha contém o nome das colunas
    bool isRowOneHeader = true;

    DataTable csvDataTable = new DataTable();
    String[] csvData = File.ReadAllLines(strFile);

    //Se o arquivo .csv não está vazio
    if (csvData.Length > 0)
    {
        String[] headings = csvData[0].Split(separator);
        int intRowIndex = 0;

        //Se a primeira linha contém o nome das colunas
        if (isRowOneHeader)
        {
            for (int i = 0; i < headings.Length; i++)
            {
                //Adiciona colunas ao DataTable
                csvDataTable.Columns.Add(headings[i].ToString());
            }

            intRowIndex++;
        }
        //Se a primeira linha não contém o nome das colunas, 
        //adiciona colunas como "Coluna1", "Coluna2", etc.
        else
        {
            for (int i = 0; i < headings.Length; i++)
            {
                csvDataTable.Columns.Add("Coluna" + (i + 1).ToString());
            }
        }

        //Popula o DataTable
        for (int i = intRowIndex; i < csvData.Length; i++)
        {
            //Cria uma nova linha
            DataRow row = csvDataTable.NewRow();

            for (int j = 0; j < headings.Length; j++)
            {
                //Adiciona os valores de cada coluna
                row[j] = csvData[i].Split(separator)[j];
            }

            //Adiciona a linha ao DataTable
            csvDataTable.Rows.Add(row);
        }
    }

    //Cria o DataSet e adiciona o DataTable nele
    DataSet myDataSet = new DataSet();
    myDataSet.Tables.Add(csvDataTable);

    return myDataSet;
}

É bom lembrar que um DataSet nada mais é do que um conjunto de DataTables, sendo possível adicioná-los e removê-los quando houver necessidade.

Comentários

Carregando comentários

Postar um novo comentário



Processando...