• advertisement_alt
  • advertisement_alt
  • advertisement_alt
caiogarcia

COMO CRIAR EXCEL VIA PROGRAMAÇÃO MANUALMENTE, SEM UTILIZAR DO RECURSO TABLETOEXCEL

6 posts in this topic

Preciso criar um arquivo excel personalizado com cabeçalho, com campos disponíveis para serem preenchidos por quem vai receber o arquivo e etcc. Como prosseguir parar criar esse excel de forma manual utilizando de comandos de manipulação de excel? 

Share this post


Link to post
Share on other sites

As 2 formas q conheço são:

1 - Vc cria um relatório com a ferramenta de Editor de Relatórios a partir de uma tabela, Query, variaveis etc... depois executa com

iDestination(iGenericXLS,"teste")
iPrintReport(RPT_NoName1)

A forma nr 1 é a q eu considero mais prática, mas vai depender muito da tua necessidade.

Outra forma é via Automação OLE (porém q eu saiba esta forma precisa ter o Excel instalado) - Segue exemplo (não testado)

oExcel is object OLE dynamic
oExcel = new object OLE "Excel.Application"
oExcel >>Visible = OLEFalse
oExcel >>Workbooks>>Open(sMyReport) 

HReadSeek(GPWUSER,Login,gsMyLogin)

oExcel >>Range("C10")>>Value=GPWUSER.Nome
oExcel >>Range("F10")>>Value=GPWUSER.Matricula

nMyCurrentRow is int = 13

FOR EACH ROW OF TABLE_QRY_Agenda
  oExcel >>Range("B" + nMyCurrentRow)>>Value=DateToString(TABLE_QRY_Agenda.COL_Date,"DD-MM-YYYY")
  oExcel >>Range("C" + nMyCurrentRow)>>Value=DateToString(TABLE_QRY_Agenda.COL_Date,"DD-MM-YYYY")
  oExcel >>Range("D" + nMyCurrentRow)>>Value=TABLE_QRY_Agenda.COL_HoraTipoNumerico
  oExcel >>Range("E" + nMyCurrentRow)>>Value=TimeToString(TABLE_QRY_Agenda.COL_Inicio,"HH:MM:SS")
  oExcel >>Range("F" + nMyCurrentRow)>>Value=TimeToString(TABLE_QRY_Agenda.COL_Inicio,"HH:MM:SS")
  oExcel >>Range("G" + nMyCurrentRow)>>Value=TABLE_QRY_Agenda.COL_Cliente + ":" + TABLE_QRY_Agenda.COL_Trajeto 
  nMyCurrentRow ++
END

oExcel >>Range("A1")>>Select
oExcel >>ActiveWorkbook>>Save
oExcel >>ActiveWorkbook>>Quit
oExcel >>Application>>Quit
Delete oExcel

 

1 person likes this

Share this post


Link to post
Share on other sites

Dependendo da versão do WD, você pode utilizar o controle de planilha direto, onde você pode após tudo montado gravar o arquivo, não precisa nem ter o excel instalado na máquina.

Na 23, por exemplo, vá no menu creation, Graphic controls, Office e opte por "spreadsheet"

 

att

2 people like this

Share this post


Link to post
Share on other sites
Em 10/02/2020 at 9:03 PM, Cassiano disse:

As 2 formas q conheço são:

1 - Vc cria um relatório com a ferramenta de Editor de Relatórios a partir de uma tabela, Query, variaveis etc... depois executa com



iDestination(iGenericXLS,"teste")

iPrintReport(RPT_NoName1)

A forma nr 1 é a q eu considero mais prática, mas vai depender muito da tua necessidade.

Outra forma é via Automação OLE (porém q eu saiba esta forma precisa ter o Excel instalado) - Segue exemplo (não testado)



oExcel is object OLE dynamic

oExcel = new object OLE "Excel.Application"

oExcel >>Visible = OLEFalse

oExcel >>Workbooks>>Open(sMyReport) 



HReadSeek(GPWUSER,Login,gsMyLogin)



oExcel >>Range("C10")>>Value=GPWUSER.Nome

oExcel >>Range("F10")>>Value=GPWUSER.Matricula



nMyCurrentRow is int = 13



FOR EACH ROW OF TABLE_QRY_Agenda

  oExcel >>Range("B" + nMyCurrentRow)>>Value=DateToString(TABLE_QRY_Agenda.COL_Date,"DD-MM-YYYY")

  oExcel >>Range("C" + nMyCurrentRow)>>Value=DateToString(TABLE_QRY_Agenda.COL_Date,"DD-MM-YYYY")

  oExcel >>Range("D" + nMyCurrentRow)>>Value=TABLE_QRY_Agenda.COL_HoraTipoNumerico

  oExcel >>Range("E" + nMyCurrentRow)>>Value=TimeToString(TABLE_QRY_Agenda.COL_Inicio,"HH:MM:SS")

  oExcel >>Range("F" + nMyCurrentRow)>>Value=TimeToString(TABLE_QRY_Agenda.COL_Inicio,"HH:MM:SS")

  oExcel >>Range("G" + nMyCurrentRow)>>Value=TABLE_QRY_Agenda.COL_Cliente + ":" + TABLE_QRY_Agenda.COL_Trajeto 

  nMyCurrentRow ++

END



oExcel >>Range("A1")>>Select

oExcel >>ActiveWorkbook>>Save

oExcel >>ActiveWorkbook>>Quit

oExcel >>Application>>Quit

Delete oExcel

 

Deu certo dessa 1º forma. Agora só tenho que aprender a como configurar antes de gerar, pra fazer um merge em certas colunas que são só de cabeçalho, descrição do documento. Alguma dica de como fazer isso?

Share this post


Link to post
Share on other sites
6 minutos atrás, caiogarcia disse:

Deu certo dessa 1º forma. Agora só tenho que aprender a como configurar antes de gerar, pra fazer um merge em certas colunas que são só de cabeçalho, descrição do documento. Alguma dica de como fazer isso?

Pois tem colunas que estão ficando assim...

merge.png

Share this post


Link to post
Share on other sites
Em 12/02/2020 at 11:45 AM, Mello Junior disse:

Dependendo da versão do WD, você pode utilizar o controle de planilha direto, onde você pode após tudo montado gravar o arquivo, não precisa nem ter o excel instalado na máquina.

Na 23, por exemplo, vá no menu creation, Graphic controls, Office e opte por "spreadsheet"

 

att

Faz como o Mello disse e depois faz o merge no código, segue link do manual

2H0J6vi.png

 

1 person likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now