Ir para conteúdo
jjeffman

Usando C++ Builder TADOQuery para consultar planilhas Excel contendo células mescladas

Recommended Posts

Olá,

 

Eu estou usando TADOQuery para ler planilhas de um arquivo do Excel.

ADOQX->SQL->Text = "Select *  from [" + sPlan + "]";
try{ ADOQX->Active = true; }
catch(Exception *E){
  //MemoLog->Lines->Add ("PLanilha: "+ sPlan + " "+ E->Message );
  continue;
}
//MemoLog->Lines->Add ( "Obter as colunas da planilha "+ sPlan);
for(int Col = 0; Col < ADOQX->FieldCount; Col++)
{
  Planilha->AddColumn( Col, ADOQX->Fields->Fields[Col]->FieldName );
}

O retorno de ADOQX->FieldCount representa o número total de colunas presentes na planilha porém, como há duas linhas de cabeçalho antes dos dados e a primeira linha possui células que foram mescladas, os valores retornados por ADOQX->Fields->Fields[Col]->FieldName em alguns casos foram substituídos por F2, F3, .. etc

 

Há alguma maneira de identificar se existe célula mesclada na linha da planilha usando os componentes ADO do C++ Builder ( Delphi ) ?

 

Obrigado.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por headway123
      Olá,

      Por gentileza, estou com o seguinte problema e não consigo encontrar a solução.

      Ao preencher com a data no UserForm, o Excel inverte o DIA, pelo MÊS, em qualquer data anterior ao dia 12.

      Já mudei a formatação de data do Excel para Portugues, Ingles, e também não deu certo.

      Segue os dois códigos que utilizo.

      If Len(TxtProximoContato.Text) = 2 Then
      TxtProximoContato = TxtProximoContato + "/"
      End If

      If Len(TxtProximoContato.Text) = 5 Then
      TxtProximoContato = TxtProximoContato + "/"
      End If



      TxtProximoContato.MaxLength = 11 '10/10/2014
      Select Case KeyAscii
      Case 8 'Aceita o BACK SPACE
      Case 13: SendKeys "{TAB}" 'Emula o TAB
      Case 48 To 57
      If TxtProximoContato.SelStart = 2 Then TxtProximoContato.SelText = "/"
      If TxtProximoContato.SelStart = 5 Then TxtProximoContato.SelText = "/"
      Case Else: KeyAscii = 0 'Ignora os outros caracteres
      End Select

      Tenho outro TextBox 'Date' que registra a data atual para cadastro, que as vezes também ocorre essa inversão.

      Tentei de várias formas e não consegui resolver.

      Por favor, se alguém souber resolver isso eu agradeço muito!
    • Por ppdeola
      Boa tarde Imasters,
       
      Estou a um tempo já sem programar em Delphi e preciso de uma ajuda da comunidade para criar uma conexão de dados com uma tabela em Excel, contudo esta planilha está criptografada e com senha. Estou usando ADOConnection, já consigo conectar a esta mesma planilha quando retiro a criptografia, mas quando habilito a criptografia com senha ele não reconhece o arquivo como válido.
       
      Agradeço pela ajuda.
       
       
       
       
    • Por Gabriel Maciel
      Olá, pessoal!
      Tenho um banco de dados no excel com mais de 800 emails, e estou precisando desenvolver um programa ou página web que pegue todos esses emails e eu possa enviar uma mesma mensagem para todos... imagino que posso fazer isso com php (no caso de uma página web), mas não tenho certeza como. Me ajudem por favor, tenho até dia 8 desse mês pra resolver isso 
      Obrigado a todos!!
    • Por mpsouzaa
      Fala galera, to com uma dúvida que tá me fazendo coçar a cabeça. Talvez seja muito simples de resolver.
       
      Eu fiz este código para que, ao selecionar uma linha na ListView1 ele adicione a palavra "PAGO" na linha selecionada na coluna "N" da planilha "DBPEDIDOS" e está funcionando certo, mas só funciona quando tenho apenas 1 linha selecionada.
      For i = Listview1.ListItems.Count To 1 Step -1 If Listview1.ListItems(i).Selected = True Then Dim ID As Variant ID = Listview1.ListItems.Item(i) Listview1.ListItems.Remove i Plan6.Range("A2").Select With Worksheets("DBPEDIDOS").Range("A:A") Set C = .Find(ID, LookIn:=xlValues, lookat:=xlPart) If Not C Is Nothing Then C.Activate ActiveCell.Offset(0, 13).Value = "PAGO" End If End With End If Next i O que eu quero fazer é que ele insira a palavra "PAGO" em todas as linhas caso eu selecione mais de uma na listview. Se alguém puder dar uma força agradeço demais.
    • Por lsmecenas@gmail.com
      Oi gente, comecei a mexer em banco de dados na semana passada, então sou muito leigo em algumas partes....
      Não estou conseguindo atualizar uma tabela, eu quero trocar todas as células que estão escritas 'RE1' por 'B1', e depois fazer mais atualizações ( mas não nesse momento).
      Esse aqui colado abaixo, é o meu código, e quando vou atualizar o meu arquivo, ele dá o erro -3704 "OPERAÇÃO NÃO PERMITIDA QUANDO O OBJETO ESTÁ FECHADO".
      Alguém poderia me ajudar por favor?
      Sub conexão()
      Dim cnn  As ADODB.Connection
      Dim rs          As ADODB.Recordset
      Dim SQLstr      As String
      'PathArqTUCA1 = "\Reportes\" & rngData(iArquivo, 1)
              'nomeArquivo = "[" & rngData(iArquivo, 2) & "]"
              Set cnn = New ADODB.Connection
              cnn.Provider = "Microsoft.ACE.OLEDB.12.0"
              cnn.ConnectionTimeout = 90
              cnn.ConnectionString = "Data Source= C:\Nova pasta\Testando\" _
              & ";" & "Extended Properties=""text;HDR=Yes;FMT=Delimited"""
              cnn.Open
              
              
          
          Set rs = New ADODB.Recordset
          rs.CursorLocation = adUseClient
         SQLstr = _
                    " UPDATE [UCBT_01.txt] " & _
                    " SET GRU_TAR='B1'" & _
                    " WHERE GRU_TAR= 'RE1';"
           rs.Open SQLstr, cnn, adOpenForwardOnly, adLockReadOnly, adCmdText
          
         'cria arquivo texto
      'Set txtFile = fso.CreateTextFile("C:\Nova pasta\Testando\arqTexto.txt", True)
      'escreve e utiliza o separador ( tabulado ) entre os campos
      'txtFile.Write (rs.GetString(adClipString, , "", vbCrLf, ""))
      'MsgBox "Arquivo texto gerado com sucesso !", vbInformation, "Exportando um Recordset como Texto"
      'Exit Sub
      'trata_erro:
      'MsgBox "Ocorreu o seguinte erro : " & Err.Description
      ' End Sub
      Planilha1.Range("F2").CopyFromRecordset rs
          rs.Close
          cnn.Close
          End Sub
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.