1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[RESOLVIDO] Relatório para xlsx

Discussão em 'EMS , HCM e Totvs 11' iniciado por muertebr, Junho 17, 2009.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. muertebr

    muertebr Membro Participativo

    Ola... estou com um problema num relatório ao qual o relatório é salvo em .xls preciso fazer com que caso seja o excel 2007 ele salve em xlsx que é padrão, pois existe pessoas que usam office antes do 2007 e algumas que usam 2007 em diante... ;)

    segue parte do código, acredito ser isso:

    system-dialog get-file c-nome-excel
    filters "Planilhas do Excel" "*.xls" initial-filter 1
    ask-overwrite must-exist save-as
    title "Arquivo a gerar" use-filename update l-nome-excel.
    assign c-nome-excel:screen-value in frame f-pg-imp = c-nome-excel.
  2. baltazar

    baltazar Membro Participativo

    O que quer é tendo o Excel 2007 gravar no formato .xls. Certo?
  3. muertebr

    muertebr Membro Participativo

    Eu preciso que o programa abra o arquivo corretamente...

    O usuário tem o excel 2007 e quando vai abri o arquivo da erro, pq o 2007 nao abre o .xls, acho que na verdade seria converte do xls para xlsx para o 2007 consegui abri.
  4. af.dums

    af.dums Membro Ativo

    Bom dia...

    O Office 2007 abre xls, já tentou abrir esse arquivo em 2003 para ver se não é o arquivo que está corrompido?

    Att,
    Anderson
  5. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Caro colega,

    No tópico http://www.4each.com.br/viewtopic.php?f=19&t=450&start=0&st=0&sk=t&sd=a postei um exemplo para geração de planilha utilizando-se de modelos.

    Neste exemplo, tenho:

    01) Uma planilha formatada no Excel 2003;
    02) Esta planilha é aberta por qualquer Excel (2003 ou 2007 ou anteriores);
    03) Antes de escrever na planilha, é salva com novo nome e neste momento é verificado a versão do Excel, para saber se salva em 2003 ou 2007

    Código:
    
    if ChExcel:version              <> "11.0" and 
       entry(2,cNomeArqDestino,".") = "xls"   then do:
    
        assign ChBook                 = ChExcel:WorkBooks:OPEN(cNomeArqDestino)
               ChSheet                = ChExcel:ActiveSheet
               ChExcel:DisplayAlerts  = no /*** NÆo mostrar mensagens de error ***/
               ChExcel:visible        = no /*** NÆo mostrar a planilha na tela ***/
               chexcel:ScreenUpdating = no /*** NÆo efetuar display na tela    ***/.
        
        ChExcel:ActiveWorkbook:SaveAs(replace(cNomeArqDestino,"xls","xlsx"),
                                      51,
                                      "",
                                      "",
                                      false,
                                      false,
                                      3,
                                      1,
                                      1,
                                      1) no-error.
    
        os-command silent value("del " + cNomeArqDestino).
    
        assign cNomeArqDestino = replace(cNomeArqDestino,"xls","xlsx"). /*** Salvar planilha gerada no 97/2003 para o 2007 ***/
    
        ChExcel:ActiveWorkbook:close.
    
        if valid-handle(ChExcel) then
            release object ChExcel      no-error.
    
        if valid-handle(ChSheet) then
            release object ChSheet      no-error.
    
        if valid-handle(ChBook) then
            release object ChBook       no-error.
    
    end.
    
    
    Ou seja, se a planilha aberta está em 2003 (xls), é verificado a versão atual do Excel (<> 11.0) e então ela é salva no formato 2007 (xlsx), caso contrário mantém no format 2003 (xls).

    Tem funcionado corretamente, sem problemas de compatibilidade, exceto nos casos onde é salvo como XLSX e tenta-se abrir no 2003.
  6. muertebr

    muertebr Membro Participativo

    vlwww
    vo da uma conferida :D
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página