none
Importar arquivo excel e gerar GridView RRS feed

  • Pergunta

  • Olá bom dia, estou com uma duvida se é possível realizar a criação de um importador de arquivos excel para a base de dados, mas esse é um tanto diferente do comum pelo menos pra mim.

    Meu trabalho envolve Asp.Net C# e a conexão com o BD SQL SERVER e desenvolvo as funções de BD em Procedures.

    Minha duvida é a seguinte, preciso importar um arquivo em Excel para a base de dados e gerar uma Gridview com esse arquivo importado, mas até agora só fiz a parte do Upload e sua função básica de enviar para uma pasta o arquivo anexado.

    Só que preciso criar um isso que seja flexível não com campos já definidos e apenas lendo a linhas do arquivo Excel e inserindo na base de dados o que foi registrado em cada célula do Excel, exemplo:  o que preciso é criar uma forma de importar esse arquivo que tenha 29 colunas e no nome no topo da coluna do Excel ai sim criar o campo de cada coluna pegando e lendo a primeira linha e depois inserir da segunda linha pra frente cada dado que é referente a sua coluna, resumindo ao que vejo preciso realizar um CREATE e depois um INSERT e ai voltar essas informações na GRIDVIEW, e caso ele mude e coloque mais uma coluna ou outro Excel com 35 colunas e dados diferentes "algo bem flexível a mudanças" fazer essa alteração e novamente retornar os dados, imagino que nesse ponto faço um DROP toda vez que ele upar um arquivo Excel, essa lógica esta certa? alguém tem alguma dica melhor? é que sempre trabalhei com campos já definidos mas algo que pode variar de 29 campos a 35 mudar o nome desse campos como programa uma importação tão flexível ?

    quinta-feira, 23 de abril de 2015 13:15

Respostas

  • Amigo,

    Como o seu excel pode ser "flexível" não seria interessante ler ele no lugar do banco ou realmente é necessário importar esses registros para a base?

    Também é possível ler o excel a partir do SQL Server, veja esse link http://sqlwithmanoj.com/2010/11/12/query-excel-file-source-through-linked-server/.

    Espero ter ajudado e boa sorte!


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    quinta-feira, 23 de abril de 2015 13:36
  • André, uma duvida, a linha do seu arquivo tem a mesma qtde de colunas ou uma linha pode ter uma qtde e outra linha pode ter outra ?

    Tenho algo parecido sendo que com arquivo no formato txt, para isso uso o length() da linha e verifico o valor, mais no meu caso as linhas tem sempre o mesmo tamanho. 

    No seu caso acho que vc poderia usar o split e verificar a qtde que ele retorna.


    Junior

    quinta-feira, 23 de abril de 2015 13:34

Todas as Respostas

  • André, uma duvida, a linha do seu arquivo tem a mesma qtde de colunas ou uma linha pode ter uma qtde e outra linha pode ter outra ?

    Tenho algo parecido sendo que com arquivo no formato txt, para isso uso o length() da linha e verifico o valor, mais no meu caso as linhas tem sempre o mesmo tamanho. 

    No seu caso acho que vc poderia usar o split e verificar a qtde que ele retorna.


    Junior

    quinta-feira, 23 de abril de 2015 13:34
  • Amigo,

    Como o seu excel pode ser "flexível" não seria interessante ler ele no lugar do banco ou realmente é necessário importar esses registros para a base?

    Também é possível ler o excel a partir do SQL Server, veja esse link http://sqlwithmanoj.com/2010/11/12/query-excel-file-source-through-linked-server/.

    Espero ter ajudado e boa sorte!


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    quinta-feira, 23 de abril de 2015 13:36
  • Oi Junior Luiz,

    É quantidades diferentes exemplo colunas do excel: CNPJ | CPF | OPERAÇÂO | ... 

    então no momento tenho duas linhas de dados que segue de baixo de cada coluna então preciso pegar esses

    dados da primeira linha gerar um campo no BD digamos CNPJ algo automático e depois vir inserindo os dados referente a esse CNPJ.

    eu tava agora mesmo vendo esse site e me baseando nele, do jeito que mostra nele nem preciso criar o Bd

    se não tiver enganado:

    http://csharpbrasil.com.br/criar-ler-e-modificar-arquivos-excel-sem-uso-da-interoperabilidade-ou-conexao-oledb/

    quinta-feira, 23 de abril de 2015 13:49
  • Essa quantidade diferente é no mesmo arquivo ?

    Pq o que pensei seria vc ler a linha e ver a quantidade de ; com o split e jogar isso em um array;

    olha esse link 

    http://www.dotnetperls.com/split

    Como te falei tenho uma página onde leio linha a linha um arquivo texto e pego os campos e salvo no meu banco de dados, se encontrar algum erro dou um roolback.


    Junior

    quinta-feira, 23 de abril de 2015 13:55
  • A certo, a Brigado Junior e Lucas, já resolvi aqui mas a ideias de vocês foram ótimas.
    quinta-feira, 23 de abril de 2015 15:24
  • Bom dia André,

    Consegue nos postar a solução para que o próximo que venha a passar pela mesma situação consiga resolver??

    Qualquer nova dúvida estamos a disposição.

    Obrigado,

    Abraço!


    Eduardo Romero

    Esse conteudo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais facil para os outros visitantes encontrarem a resolucao mais tarde.

    sexta-feira, 24 de abril de 2015 11:38
    Moderador