Analisador / leitor de CSV para C #? [fechadas]


89

existe uma implementação boa e gratuita do analisador CSV disponível sob alguma licença liberal? Alguma contraparte do SuperCSV para Java, talvez uma porta?



5
using Microsoft.VisualBasic.FileIO.TextFieldParser;


1
Não é construtivo? ASSIM, os administradores são tão loucos. Esta é uma pergunta MUITO útil.
richard de

Respostas:


70

24
FileHelpers (para CSV pelo menos) requer que você "defina uma classe que mapeie para o registro na origem (arquivo)", "você deve declarar uma Classe de mapeamento de registro" etc. e isso não é tão importante. Gostaria de converter CSV em DataTable, sem saber com antecedência quantas colunas esperar.
Konrad Morawski

53

Há uma boa implementação no CodeProject :

Para fornecer mais números reais, com um arquivo CSV de 45 MB contendo 145 campos e 50.000 registros, o leitor estava processando cerca de 30 MB / s. Resumindo, demorou 1,5 segundos! As especificações da máquina eram P4 3,0 GHz, 1024 MB.


(pegando de volta meu +1): Acabei de quebrar o leitor Lumenworks Fast CSV em um arquivo de 53Mb. Parece que o cache de linha falhou após 43.000 linhas e embaralhou o buffer. Tentei o Microsoft.VisualBasic.FileIO.TextFieldParsee funcionou.
Gone Coding

11

Você pode carregar um arquivo CSV para DataTable.

Código de amostra -

static DataTable CsvToDataTable(string strFileName)
{
    DataTable dataTable = new DataTable("DataTable Name");

    using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Directory.GetCurrentDirectory() + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\""))
    {
        conn.Open();
        string strQuery = "SELECT * FROM [" + strFileName + "]";
        OleDbDataAdapter adapter = 
            new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
        adapter.Fill(dataTable);
    }
    return dataTable;
}

Certifique-se de compilar seu projeto para o processador x86. Não funciona para x64.


1
isso funcionou muito bem para mim, pois eu queria ficar com as bibliotecas ODBC ou OLEDB integradas. A propósito, o seguinte tem exemplos de código adicionais para OLEDB e ODBC: csvreader.com/csv_benchmarks.php
Meringros,

5
Isso não está funcionando em 64 bits, infelizmente.
DenNukem


7

tente filehelpers Funcionam incrivelmente bem. Estou usando-o para analisar um arquivo de 100 MB todos os dias.



3

Comecei a usar o CSV Parser que faz parte do CommonLibrary.NET .

Ele usa .NET 3.5, tem uma API fácil e sobrecargas / métodos e lamda convenientes para iterações.

Não tenho nenhum benchmark para este como acima, mas o bom sobre isso é que é apenas um componente de uma biblioteca semelhante ao Java Commons. Portanto, também consigo um analisador de linha de comando, implementação de repositório, entre outras coisas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.