Upload arquivo .csv no site não abre as tabelas
16/04/2019
0
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
Curtir tópico
+ 0
Responder
Post mais votado
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.
Stella Oliveira
Responder
Mais Posts
23/07/2019
Paulo Freitas
muito obrigado pela dica!!!
aprendendo ainda... kkkk
abração!!!
aprendendo ainda... kkkk
abração!!!
Responder
Clique aqui para fazer login e interagir na Comunidade :)