Exportar para excel com Abas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Exportar para excel com Abas

Mensagem por marcos.gurupi »

Caros exportar rel para o excel nos jah falamos aqui no forum e tem varios exemplos. Mas alguem saberia me dizer como faco para exportar o relatorio para o excel e adicionar abas?

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Exportar para excel com Abas

Mensagem por sygecom »

Marcos, como você mostra os relatórios do seu sistema ? dependendo de como você usa posso lhe ajudar postando alguns exemplos.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Exportar para excel com Abas

Mensagem por Toledo »

Marcos, dê uma olhada neste exemplo:

Código: Selecionar todos

FUNCTION MAIN()
LOCAL oExcel, oSheet 

oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Add()
oSheet := oExcel:Get( "ActiveSheet" )
oSheet:Name := "Aba 1"

oSheet:Cells( 1, 1 ):Value := "Codigo"
oSheet:Cells( 1, 2 ):Value := "Nome"

oExcel:Sheets:Add()
oSheet := oExcel:Get( "ActiveSheet" )
oSheet:Name := "Aba 2"

oSheet:Cells( 1, 1 ):Value := "Data"
oSheet:Cells( 1, 2 ):Value := "Valor"

oSheet:Cells( 1, 1 ):Select()
oExcel:Visible := .T.

Return Nil
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Exportar para excel com Abas

Mensagem por marcos.gurupi »

Obrigado Leonardo e Toledo. No exemplo do Toledo como eu poderia preencher as celulas e principalmente como eu consigo manipular o tamanho das celulas. Na verdade eu tenho um relatorio que dentro de um relatorio ele apresenta 5 paginas (que seria as abas) e cada uma com seu formato. Estou com uma certa dificuldade para manipular as celulas via xhb. Obrigado.
Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Exportar para excel com Abas

Mensagem por Toledo »

marcos.gurupi escreveu:No exemplo do Toledo como eu poderia preencher as celulas e principalmente como eu consigo manipular o tamanho das celulas.
Preencher as células: Cells(linha,coluna):Value

Código: Selecionar todos

oSheet:Cells( 2, 1 ):Value := "Nº"
oSheet:Cells( 2, 2 ):Value := " N O M E   D O   P A I"
oSheet:Cells( 2, 3 ):Value := " N O M E   D O   A L U N O"
oSheet:Cells( 2, 4 ):Value := "Ano"
oSheet:Cells( 2, 5 ):Value := "Mensalidade"
oSheet:Cells( 2, 6 ):Value := "Apostila"
oSheet:Cells( 2, 7 ):Value := "Xerox"
oSheet:Cells( 2, 8 ):Value := "Uniforme"
oSheet:Cells( 2, 9 ):Value := "R.O."
oSheet:Cells( 2, 10 ):Value := "Total"
Tamanho das colunas:

Código: Selecionar todos

oSheet:Columns(1):ColumnWidth := 3.86
oSheet:Columns(2):ColumnWidth := 40
oSheet:Columns(3):ColumnWidth := 40
oSheet:Columns(4):ColumnWidth := 7
oSheet:Columns(5):ColumnWidth := 6.43
Tamanho da letra e Negrito:

Código: Selecionar todos

oSheet:Cells( 1, 1 ):Font:Size := 14
oSheet:Cells( 1, 1 ):Font:Bold := .T.
oSheet:Cells( 2, 1 ):Font:Size := 10


Alinhamento das células:

Código: Selecionar todos

oSheet:Cells( 1, 1 ):HorizontalAlignment:= -4108 //Centro
oSheet:Cells( 1, 2 ):HorizontalAlignment:= -4131 //Esquerda
oSheet:Cells( 1, 3 ):HorizontalAlignment:= -4152 //Direita
oSheet:Range("A2:M2"):HorizontalAlignment:= -4131 //Esquerda de A2 até M2
Mesclar células:

Código: Selecionar todos

oSheet:Range("A1:M1"):Merge()
Escolher fonte de letra:

Código: Selecionar todos

oSheet:Cells:Font:Name := "Times New Roman"
oSheet:Cells:Font:Size := 9
Formatar célula:

Código: Selecionar todos

 oSheet:Cells( 1, 5 ):Set( "NumberFormat", "#.##0,00" )
Acho que não esqueci nada!

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Exportar para excel com Abas

Mensagem por marcos.gurupi »

Esplendido, Espetacular resumindo. Obrigado!


NOTA: Teria como colocar cor?

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Exportar para excel com Abas

Mensagem por Toledo »

Marcos, segue um exemplo:

Cor da letra:

Código: Selecionar todos

oSheet:Cells( 1, 1 ):Font:ColorIndex := 3
Cor de Preenchimento:

Código: Selecionar todos

oSheet:Cells( 1, 2 ):Interior:ColorIndex := 7
Tabela de cores básicas:

Código: Selecionar todos

Preto = 1
Branco = 2
Azul = 5
Azul Claro = 41
Azul Escuro = 11
Verde = 10
Vermelho = 3
Amarelo = 6
Marron = 53
Violeta = 13
Laranja = 46
Rosa = 7
Colocar Bordas:

Código: Selecionar todos

oSheet:Range("A2:M10"):Borders(1):LineStyle:= 1
oSheet:Range("A2:M10"):Borders(2):LineStyle:= 1
oSheet:Range("A2:M10"):Borders(3):LineStyle:= 1
oSheet:Range("A2:M10"):Borders(4):LineStyle:= 1
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Exportar para excel com Abas

Mensagem por gvc »

E só agora ele libera a informação pra gente. (eh.eh.eh.)

Eu estava precisando saber como fazer isso tb.
Preciso gerar as planilhas para o funcionário poder fazer as pesquisas dele.

Obrigado Toledo.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Exportar para excel com Abas

Mensagem por gvc »

Só uma pergunta bem simples: Tem alguma documentação com as instruções disso???
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Exportar para excel com Abas

Mensagem por Toledo »

Olá gvc, eu não tenho nenhuma documentação, mas aqui quando preciso de algo novo eu to fazendo o seguinte:

1 - Entro no Excel e abro um arquivo novo.
2 - Depois escolho as opções: Ferramentas / Macro / Gravar nova macro
3 - No nome da macro eu sempre coloco TESTE (pois depois eu acabo nunca salvando a macro e nem o arquivo XLS) e clico no botão Ok.
4 - Depois tudo o que eu fizer no excel, será gravado nesta macro.
5 - Quando eu terminar, mando parar a gravação da macro.
6 - Ai é só entrar em: Ferramentas / Macro / Macros... (Alt+F8), selecione a macro que você gravou (TESTE no caso) e clico no botão Editar.

Ai vai aparecer o código de tudo que você fez durante a gravação da macro.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Re: Exportar para excel com Abas

Mensagem por Luciano Bonfim »

Caros,

para exportar de um DBF para excel eu copia campo por campo do meu DBF e vou colocando na XLS, só que quando meu arquivo DBF está muito grande esta operação está ficando demorada demais, existe alguma forma mais rápida de copiar essas informações, talvez linha a linha em vez de campo a campo?

Segue o meu código:

Código: Selecionar todos

function trataCamposExcel
local x,mcampo
for x=1 to len(v_est)
   mcampo=v_est[x,1]
   do case
   case v_est[x,2] == "C"      
      cCell := "'"+alltrim(&mcampo)
   case v_est[x,2] == "N"
      cCell := &mcampo
   case v_est[x,2] == "L"
      cCell := if (&mcampo, "Sim", "Näo")
   case v_est[x,2] == "D"
      cCell := &mcampo
   otherwise
      cCell := "error"
   endcase
   oSheet:Cells( linha, x ):Value = cCell
next
return(nil)
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Re: Exportar para excel com Abas

Mensagem por Luciano Bonfim »

consegui resolver copiando linha a linha assim: jogo as elulas para um array e depois copio o array todo para a linha do xls

aadd(aRecord,cCell)
next

oSheet:Range(oSheet:Cells(linha,1),oSheet:Cells(linha,len(v_est))):Value := aRecord
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Re: Exportar para excel com Abas

Mensagem por pauloa1 »

Olá Toledo!

Show de bola seus exemplos.

vc consegue proteger a planilha gerada?

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Esse código deu ao fazer a sua dica, através da macro, mas não consegui colocar no sistema.

Na verdade eu gostaria que fosse assim.

Quero gerar uma planilha, e que a mesma seja protegida com ou sem senha, "apenas visualização", mas o usuário podendo alterar os dados de apenas uma coluna no caso a "G".

No caso dessa coluna "G" deixa mudar apenas os dados, não alterar configurações dele, tipo "tamanho, fonte etc..."

Depois eu faço uma rotina de importação dessa coluna para o meu sistema.



Paulo
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Exportar para excel com Abas

Mensagem por Toledo »

Paulo, como proteger parcialmente uma planilha eu não sei, mas para proteger a planilha toda basta usar o comando:

Código: Selecionar todos

oSheet:Protect("sua_senha")
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Re: Exportar para excel com Abas

Mensagem por pauloa1 »

Olá Toledo!

Obrigado pela dica, mas essa eu já tinha testado, da o seguinte erro ao executar.



Error 1547476: CELLS/0 S_OK: _VALUE Arguments: ([ 1] =Type: C Val: Codigo)


vc sabe como faço para mandar a celula calculada exemplo: =SOMA(D6:E6) ?

Paulo
Responder