Upload arquivo .csv no site não abre as tabelas
Olá pessoal, tudo bem?
Estou com um site em ASP.Net de uma empresa que esta com problema ao importar arquivos .csv na plataforma, ele não reconhece o conteúdo do arquivo. Para arquivos em .txt está funcionando normalmente, apenas o .csv que não abre. Poderiam me auxiliar?
public static DataTable CarreguePlanilha(string caminho)
{
var dtComColunas = new DataTable();
var criptografado = Path.GetExtension(Path.GetFileName(caminho)) == ".emailing";
//se é csv..
if ((new string[] { ".csv", ".txt" }).Contains(Path.GetExtension(Path.GetFileName(caminho))))
{
var csv = new CsvReader(new StreamReader(caminho), new CsvHelper.Configuration.Configuration { Delimiter = ";" });
csv.Read();
foreach (var h in csv.Context.HeaderRecord)
dtComColunas.Columns.Add(h, typeof(string));
dtComColunas.Rows.Add(csv.Context.HeaderRecord.Select(h => csv.GetField<string>(h)).ToArray());
while (csv.Read())
dtComColunas.Rows.Add(csv.Context.HeaderRecord.Select(h => csv.GetField<string>(h)).ToArray());
return dtComColunas;
}
Erro informado...
Exception User-unhandled
System.NullReferenceException: 'Referência de objeto não definida para uma instância de um objeto.'
<Temporary local of type 'string[]'> was null.
Estou com um site em ASP.Net de uma empresa que esta com problema ao importar arquivos .csv na plataforma, ele não reconhece o conteúdo do arquivo. Para arquivos em .txt está funcionando normalmente, apenas o .csv que não abre. Poderiam me auxiliar?
public static DataTable CarreguePlanilha(string caminho)
{
var dtComColunas = new DataTable();
var criptografado = Path.GetExtension(Path.GetFileName(caminho)) == ".emailing";
//se é csv..
if ((new string[] { ".csv", ".txt" }).Contains(Path.GetExtension(Path.GetFileName(caminho))))
{
var csv = new CsvReader(new StreamReader(caminho), new CsvHelper.Configuration.Configuration { Delimiter = ";" });
csv.Read();
foreach (var h in csv.Context.HeaderRecord)
dtComColunas.Columns.Add(h, typeof(string));
dtComColunas.Rows.Add(csv.Context.HeaderRecord.Select(h => csv.GetField<string>(h)).ToArray());
while (csv.Read())
dtComColunas.Rows.Add(csv.Context.HeaderRecord.Select(h => csv.GetField<string>(h)).ToArray());
return dtComColunas;
}
Erro informado...
Exception User-unhandled
System.NullReferenceException: 'Referência de objeto não definida para uma instância de um objeto.'
<Temporary local of type 'string[]'> was null.
Paulo Freitas
Curtidas 0
Melhor post
Stella Oliveira
23/07/2019
Ei Paulo, não sei se vai ajudar você mas faz o seguinte.. quando você receber um arquivo trata ele com o tipo HttpPostedFileBase, olha como ficaria:
Recomendo você fazer o debug para entender o fluxo, passando seu arquivo csv no método indicado.
Abraço.
Recomendo você fazer o debug para entender o fluxo, passando seu arquivo csv no método indicado.
public async void CadastroPlanilhaCSV(HttpPostedFile planilha) { using (var arquivo = new StreamReader(planilha.InputStream, Encoding.Default, true)) { using (var csv = new CsvReader(arquivo)) { while (csv.Read()) { var records = csv.GetRecord<dynamic>(); var a = (IDictionary<string, object>)records; List<string> valorCSV = new List<string>(); foreach (var chave in a.Keys) { valorCSV.Add(chave); } } } } }
Abraço.
GOSTEI 1
Mais Respostas
Paulo Freitas
16/04/2019
muito obrigado pela dica!!!
aprendendo ainda... kkkk
abração!!!
aprendendo ainda... kkkk
abração!!!
GOSTEI 0