Página 1 de 5

Exportar para excel com Abas

Enviado: 22 Jan 2010 14:30
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.

Re: Exportar para excel com Abas

Enviado: 22 Jan 2010 22:00
por sygecom
Marcos, como você mostra os relatórios do seu sistema ? dependendo de como você usa posso lhe ajudar postando alguns exemplos.

Re: Exportar para excel com Abas

Enviado: 23 Jan 2010 15:05
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,

Re: Exportar para excel com Abas

Enviado: 23 Jan 2010 15:15
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.

Re: Exportar para excel com Abas

Enviado: 23 Jan 2010 20:58
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,

Re: Exportar para excel com Abas

Enviado: 24 Jan 2010 00:26
por marcos.gurupi
Esplendido, Espetacular resumindo. Obrigado!


NOTA: Teria como colocar cor?

Marcos Roberto.

Re: Exportar para excel com Abas

Enviado: 24 Jan 2010 10:53
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,

Re: Exportar para excel com Abas

Enviado: 24 Jan 2010 12:46
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.

Re: Exportar para excel com Abas

Enviado: 03 Fev 2010 00:52
por gvc
Só uma pergunta bem simples: Tem alguma documentação com as instruções disso???

Re: Exportar para excel com Abas

Enviado: 03 Fev 2010 11:00
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,

Re: Exportar para excel com Abas

Enviado: 29 Abr 2010 11:02
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)

Re: Exportar para excel com Abas

Enviado: 29 Abr 2010 16:31
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

Re: Exportar para excel com Abas

Enviado: 11 Dez 2010 17:11
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

Re: Exportar para excel com Abas

Enviado: 13 Dez 2010 14:30
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,

Re: Exportar para excel com Abas

Enviado: 13 Dez 2010 18:37
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