none
Confrontar base com planilha excel RRS feed

  • Pergunta

  • Preciso fazer um programa que leia uma planilha e pesquise no BD se esse numero existe ou não. Bem, há uma questão específica aí. Na base de dados, esse campo tem 20 digitos e na planilha pode ter, 7 ou 8 ou 9 ou 10 dígitos, ou seja, na planilha foram ignorados os zeros à esquerda. Alguém tem alguma idéia de como usar isso no C# e MySql 5.1? Eu preciso é de apenas idéia. Observe que eu não estou pedindo código pronto, apenas uma idéia de como fazer, porque tenho dúvidas de fazer isso devido ao Excel. Se fosse possível via script, seria ideal, mas a questão é que não temos um padrão de pesquisa, tipo apartir do dígito tal e etc... Qualquer idéia é bem vinda. Obrigado.
    quinta-feira, 2 de agosto de 2012 15:03

Todas as Respostas

  • Tem como ler um arquivo excel pelo Sql Server. Após ler o arquivo você pode verificar se tal coluna na tabela do banco de dados contém (função CONTAINS no SQL Server) tal linha do seu arquivo Excel. Uma procedure para fazer isso tudo ficaria melhor.

    Esse foi apenas o método que eu tentaria utilizar pois, obviamente, há várias soluções para esse seu problema, mas particularmente eu optaria por esse que lhe passo.


    Se a sugestão resolver o problema, favor marcar como Resposta.



    • Editado Lucas_Santos quinta-feira, 2 de agosto de 2012 15:15
    quinta-feira, 2 de agosto de 2012 15:13
  • Exato, a questão é que é MySql e não Sql Server. E no MySql tudo é mais complicado. O problema é ler a planilha no MySql.
    quinta-feira, 2 de agosto de 2012 16:43
  • Carregue o arquivo no C#, faça a conexão com o banco e compare os valores. Mais simples.

    Se a sugestão resolver o problema, favor marcar como Resposta.

    quinta-feira, 2 de agosto de 2012 17:27
  • Consegui abrir a planilha e ler o conteudo que me interessa. Agora, entendendo o cliente, ele quer o seguinte. Eu abro essa planilha que tem 8 colunas, mas apenas tres vem preenchida. Ai, em uma das colunas chamada Contrato, eu comparo em meu banco de dados. Caso haja no banco, o contrato em questão, aí eu pego os demais campos e preencho na planilha, naquela posição, pois na planilha eles estarão vazios. A questão é, como eu faço isso? Fiz um método que lesse a planilha e esse método ele já abriu a planilha, então, não haverá problemas para preencher as colunas com a planilha aberta? Será? E como eu preencho uma coluna no Excel pelo C#?
    quinta-feira, 2 de agosto de 2012 19:18
  • Esqueci de postar o código que fiz para ler a planilha. Pode ser útil para outros.

    string Erro = "";

                OleDbConnection conecta = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\CLS Documentos\Base Itau.xls;Extended Properties='Excel 12.0 Xml;HDR=YES';");

                OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [Plan2$]", conecta);
                DataSet ds = new DataSet();

                try
                {
                    adapter.Fill(ds);

                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        //Console.WriteLine("Contrato: {0} ", linha["Contrato"].ToString());
                        MessageBox.Show(linha["Contrato"].ToString());
                    }

                }
                catch (Exception ex)
                {
                    Erro = ex.Message;
                }
                finally
                {
                    
                }

    quinta-feira, 2 de agosto de 2012 19:20