none
Tabela Dinâmica Excel C# RRS feed

  • Pergunta

  • Galera boa tarde,

    Eu tenho um Arquivo Excel, dentro dele eu tenho a plan1, e a plan2, minha plan1 tem uma tabela dinamica referente a plan2.

    Eu tenho um código que faz inserção nessa plan2, porem quando ele insere os valores na  plan2  a minha plan1 perde a referencia da plan2, isso seria possivel fazer? sem perder a referência da plan 2

    Obrigado!

    Estou fazendo com seguinte código

    System.Data.OleDb.OleDbConnection MyConnection;
                    System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
                    string sql = null;
                    MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\PFC000802\Desktop\Teste.xlsx'; Extended Properties='Excel 12.0 XML;HDR=YES;'");

                    foreach (var item in teste)
                    {
                        MyConnection.Open();
                        myCommand.Connection = MyConnection;
                        sql = "Insert into [BD$] (NOME_BENEF, DESC_UNIDADE, DT_MARCACAO, HORA_MARCADA, NOME_MEDICO) values('"+item.nome_benef+"','"+item.desc_unidade+"','"+item.dt_marcacao+"','" + item.hora_marcada + "','" + item.nome_medico + "')";
                        myCommand.CommandText = sql;
                        myCommand.ExecuteNonQuery();
                        //MyConnection.Dispose();
                        MyConnection.Close();
                    }

    terça-feira, 7 de maio de 2013 17:20

Respostas

  • Felipe, eu utilizei o seguinte código para referenciar outra planilha, e funcionou normal:

      SLDocument doc = new SLDocument();
    
      doc.RenameWorksheet(SLDocument.DefaultFirstSheetName, "Teste1");
      doc.SetCellValue("A1", "Uchiha Itachi");
      doc.AddWorksheet("TESTE2");
      doc.SetCellValue("A1", "=Teste1!A1");
      doc.SaveAs("teste.xlsx");


    Ao infinito e além!

    quinta-feira, 9 de maio de 2013 19:52

Todas as Respostas

  • Felipe,

    Para atender essa sua solicitação você tem que trabalhar com o conceito.

    WorkBook =  A planilha
    WorkSheet = As abas da planinha ( plan1 e plan2)
    Sendo que o objeto WorkSheet deve ser composto por Cell que serão as células da planilha.

    Estude por esses objetos e tente implementar, depois se não consegui coloque aqui até o ponto que conseguiu para que possamos te ajudar.

    Abraços,

    Leandro Rodrigues

     

    Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida

    terça-feira, 7 de maio de 2013 18:31
  • Leandro, obrigado!

    Vou estudar sobre esses objetos,

    Abraços,

    quarta-feira, 8 de maio de 2013 00:22
  • Felipe, uma forma mais fácil de fazer isso, seria utilizar um biblioteca que manipula o excel, sem a necessidade de conexão oledb. A spreasheet light faz isso para você, desde que você esteja utilizando excel no formato .xlsx (2007 para frente, pois seu formato é baseado em xml)

    Para saber mais, acesse http://spreadsheetlight.com/sample-code/ 

    Exemplo de como modificar uma planilha existente usando esta biblioteca http://spreadsheetlight.com/downloads/samplecode/ModifyExistingSpreadsheet.cs


    Ao infinito e além!

    quarta-feira, 8 de maio de 2013 14:04
  • Fabio boa tarde, 

    Fiz uma implementação utilizando essa biblioteca, consegui inserir os dados tudo certinho onde eu queria, porem a minha plan1 que é dinamica, que busca as informações nessa plan, que faço a inserção dos dados, não consegue buscar esses novos dados inseridos.

    Você conhece alguma madeira de inserir essa referência que ela perde, via programação?

    Obrigado!

    quarta-feira, 8 de maio de 2013 19:53
  • No site da biblioteca, na guia de tutoriais, mostra como você fazer uma fórmula na célula...  Se você editar a planilha, salvar, depois ir na sua planilha dinâmica e digitar a fórmula que pega informação da outra planilha (algo do tipo ='Plan1'!A5)... resolve seu problema?

    Ao infinito e além!

    quinta-feira, 9 de maio de 2013 11:54
  • Fabio, bom dia!

    Você fala do editar e salvar de maneira manual? O arquivo excel será baixado por cliente, ai o cliente só atualizaria, estou tentando encontrar onde minha pla dinamica pega a referência da planBase(algo do tipo =Plan1!$C$4:$E$11), para tentar inserir via programação essa referência.

    Obrigado!

    quinta-feira, 9 de maio de 2013 14:20
  • Felipe, eu utilizei o seguinte código para referenciar outra planilha, e funcionou normal:

      SLDocument doc = new SLDocument();
    
      doc.RenameWorksheet(SLDocument.DefaultFirstSheetName, "Teste1");
      doc.SetCellValue("A1", "Uchiha Itachi");
      doc.AddWorksheet("TESTE2");
      doc.SetCellValue("A1", "=Teste1!A1");
      doc.SaveAs("teste.xlsx");


    Ao infinito e além!

    quinta-feira, 9 de maio de 2013 19:52
  • Fabio, boa tarde!

    Eu fiz um teste desta maneira, más no caso que tenho aqui não vai funcionar, no seu exemplo estou recebendo a referência em uma célula.

    No meu caso eu teria que receber essa referência na tabela, pois tenho alguns filtro nessa tabela, nem sei se é possivel fazer isso, mais estou pesquisando, estou vendo algumas coisas com macro.

    Obrigado!

    sexta-feira, 10 de maio de 2013 18:24
  • Fabio, estou fazendo um teste em um arquivo de excel zerado está funcioando, deve ser algo com meu arquivo, vou montar o arquivo do zero.

    Valeu pela ajuda!

    Abraços!

    sexta-feira, 10 de maio de 2013 20:17