Kleyton Posted October 6, 2008 Report Share Posted October 6, 2008 Peguei esse exemplo aqui no fórun e adaptei a minha necessidade, preciso incluir no inÃcio umas três linhas de cabeçalho, alguém poderia me dar uma dica de como fazer, aliás, onde consigo material que fale sobre essas rotinas texcel? Mesmo eu informando na variável aTitCol, a mesma não sai no arquivo gerado. * 06/10/2008 Function ExcProp_() local aSql:={}, cCmdSql * links úteis : http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=10595 * http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=10593 * http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=10015 * aqui no final deste arquivo tem um execelente exemplo de geração para excel. cArqExcel:="C:\SISMOT\EXCEL\"+alltrim(LOTEAMEN->NOME_EMP)+".XLS" aTitCol:={ "Proposta", "Quadra", "Lote", "Vlr Parcela", "Qtd Parcela", "Total" } aTipoDado:={ "000000", "@", "000000", "0,00", "0,00", "0,00" } aadd( aSql, { "PROPOSTA", "QUADRA", "LOTE", "VLR PARCELA", "QTD PARCELA", "VLR TOTAL" } ) select CLASSIF set order to 1 go top do while !eof() SysReFresh() aadd( aSql, { CLASSIF->PROPOSTA_, CLASSIF->QUADRA_, CLASSIF->LOTE_, CLASSIF->VLR_PARC_, CLASSIF->QTD_PARC_, transform(CLASSIF->TOTAL_,"@E 99,999,999.99") } ) skip enddo GeraExcel( cArqExcel, aTitCol, aSql, aTipoDado, .f. ) MsgInfo("Arquivo gerado em " + cArqExcel,"Atenção") return nil ////////////////////////////DADOS DA FUNCAO//////////////////////////////////////////// // NOME : GeraArqExcel // // SINTESE : Gerar arquivo XLS // // PARAMETROS : <1> cNome do arquivo a ser gerado // // <2> aVetor com os tÃtulos das colunas // // <3> aVetor bidimensional com os dados // // <4> aVetor com os tipos de dados // // [5] lEmite preview (default=.f.) // // RETORNO : nada // /////////////////////////////////////////////////////////////////////////////////////// function GeraExcel( cArqExcel, aTitCol, aDados, aTipoDado, lPreview ) local oExcel, oFolha local x1, x2 oExcel := TOleauto():New( "Excel.Application" ) if Ole2TxtError()='S_OK' oExcel:WorkBooks:Add() oFolha := oExcel:Get("ActiveSheet") oFolha:Cells:Font:Name := 'Arial' oFolha:Cells:Font:Size := 10 for x1=1 to len( aTitCol ) // TÃtulos dos Cabeçalhos oFolha:Cells(1,x1):Value := aTitCol[x1] next *x++ *x++ for x1=1 to len( aDados ) for x2=1 to len( aDados[x1] ) oFolha:Columns(x2):AutoFit() oFolha:Cells(x1,x2):set( "NumberFormat", aTipoDado[x2] ) oFolha:Cells(x1,x2):Value := aDados[x1,x2] next next if lPreview // aqui mostra o relatorio direto no excel sem preview e nem importação oExcel:Visible := .T. endif // Incluir a geração do arquivo // oExcel:saveas( cArqExcel ) oFOlha:SaveAs( cArqExcel ) oExcel:WorkBooks:Close() oExcel:Quit() else MsgInfo( 'Excel não está instalado nessa máquina!'+CRLF+'ImpossÃvel gerar planilha', 'ATENÇÃO') endif return .t. Kleyton xHarbour 99.5 Clipper5.2E+Clipper5.3b+Blink7+FW2.0d+Fwh 2.5 (xHarbour 0.99.3) cleitonbala@bol.com.br Quote Link to comment Share on other sites More sharing options...
Kleyton Posted October 6, 2008 Author Report Share Posted October 6, 2008 Peguei esse exemplo aqui no fórun e adaptei a minha necessidade, preciso incluir no inÃcio umas três linhas de cabeçalho, alguém poderia me dar uma dica de como fazer, aliás, onde consigo material que fale sobre essas rotinas texcel? Mesmo eu informando na variável aTitCol, a mesma não sai no arquivo gerado. * 06/10/2008 Function ExcProp_() local aSql:={}, cCmdSql * links úteis : http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=10595 * http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=10593 * http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=10015 * aqui no final deste arquivo tem um execelente exemplo de geração para excel. cArqExcel:="C:\SISMOT\EXCEL\"+alltrim(LOTEAMEN->NOME_EMP)+".XLS" aTitCol:={ "Proposta", "Quadra", "Lote", "Vlr Parcela", "Qtd Parcela", "Total" } aTipoDado:={ "000000", "@", "000000", "0,00", "0,00", "0,00" } aadd( aSql, { "PROPOSTA", "QUADRA", "LOTE", "VLR PARCELA", "QTD PARCELA", "VLR TOTAL" } ) select CLASSIF set order to 1 go top do while !eof() SysReFresh() aadd( aSql, { CLASSIF->PROPOSTA_, CLASSIF->QUADRA_, CLASSIF->LOTE_, CLASSIF->VLR_PARC_, CLASSIF->QTD_PARC_, transform(CLASSIF->TOTAL_,"@E 99,999,999.99") } ) skip enddo GeraExcel( cArqExcel, aTitCol, aSql, aTipoDado, .f. ) MsgInfo("Arquivo gerado em " + cArqExcel,"Atenção") return nil ////////////////////////////DADOS DA FUNCAO//////////////////////////////////////////// // NOME : GeraArqExcel // // SINTESE : Gerar arquivo XLS // // PARAMETROS : <1> cNome do arquivo a ser gerado // // <2> aVetor com os tÃtulos das colunas // // <3> aVetor bidimensional com os dados // // <4> aVetor com os tipos de dados // // [5] lEmite preview (default=.f.) // // RETORNO : nada // /////////////////////////////////////////////////////////////////////////////////////// function GeraExcel( cArqExcel, aTitCol, aDados, aTipoDado, lPreview ) local oExcel, oFolha local x1, x2 oExcel := TOleauto():New( "Excel.Application" ) if Ole2TxtError()='S_OK' oExcel:WorkBooks:Add() oFolha := oExcel:Get("ActiveSheet") oFolha:Cells:Font:Name := 'Arial' oFolha:Cells:Font:Size := 10 for x1=1 to len( aTitCol ) // TÃtulos dos Cabeçalhos oFolha:Cells(1,x1):Value := aTitCol[x1] next *x++ *x++ for x1=1 to len( aDados ) for x2=1 to len( aDados[x1] ) oFolha:Columns(x2):AutoFit() oFolha:Cells(x1,x2):set( "NumberFormat", aTipoDado[x2] ) oFolha:Cells(x1,x2):Value := aDados[x1,x2] next next if lPreview // aqui mostra o relatorio direto no excel sem preview e nem importação oExcel:Visible := .T. endif // Incluir a geração do arquivo // oExcel:saveas( cArqExcel ) oFOlha:SaveAs( cArqExcel ) oExcel:WorkBooks:Close() oExcel:Quit() else MsgInfo( 'Excel não está instalado nessa máquina!'+CRLF+'ImpossÃvel gerar planilha', 'ATENÇÃO') endif return .t. Kleyton xHarbour 99.5 Clipper5.2E+Clipper5.3b+Blink7+FW2.0d+Fwh 2.5 (xHarbour 0.99.3) cleitonbala@bol.com.br Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.