ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Forum AtoutFox : Re: Pour information : Problème driver ODBC Excel (et autres) non lié à VFP   

Sujet

rss Flux RSS des derniers messages

Vous devez vous identifier pour pouvoir poser une question ou répondre.

mer. 18 octobre 2017, 17h33

Marc Thivolle
France France

atoutfox.public.association

Re: Pour information : Problème driver ODBC Excel (et autres) non lié à VFP

Même problème sur un petit utilitaire d'analyse de disque.

Utilisant les ressources de la session "automation Libre-Microsoft Office" de Lyon 2017, j'ai pondu le code suivant :

lcSql='SELECT MonChamp1,MonChamp2,MonChamp3 FROM C:\Temp\MaTable.dbf'
onExportExcel('C:\Temp\Test.xlsx',lcSql)
SELECT MaTable
USE

FUNCTION onExportExcel(tcXlsName,tcSql)

  LOCAL loExcel, loWorkBook
  LOCAL lcCursor, lcSql
  LOCAL lnNb, lnI, lnLgn, lnCol, lcChamp
  LOCAL ARRAY laField[1]laFieldName[1]laFieldType[1]

  loExcel=CREATEOBJECT("Excel.Application")
  loWorkBook=loExcel.Workbooks.ADD

  lcCursor='C'+SYS(3)
  lcSql=tcSql+' into cursor '+lcCursor
  &lcSql.
  SELECT(lcCursor)
  lnNb=AFIELDS(laField)
  DIMENSION laFieldName[lnNB]
  DIMENSION laFieldType[lnNB]
  FOR lnI=1 TO lnNb
    laFieldName[lnI]=ALLTRIM(LOWER(laField[lnI,1]))
    laFieldType[lnI]=laField[lnI,2]
  ENDFOR

  lnLgn=1
  FOR lnCol=1 TO lnNb
    loExcel.Cells(lnLgn,lnCol).VALUE=laFieldName[lnCol]
  ENDFOR

  SCAN
    lnLgn=lnLgn+1
    FOR lnCol=1 TO lnNb
      lcChamp=lcCursor+'.'+laFieldName[lnCol]
      IF laFieldType[lnCol]='C'
        loExcel.Cells(lnLgn,lnCol).VALUE=ALLTRIM(&lcChamp)
      ELSE
        loExcel.Cells(lnLgn,lnCol).VALUE=&lcChamp
      ENDIF
    ENDFOR
  ENDSCAN

  FOR lnCol=1 TO lnNb
    loExcel.COLUMNS(lnCol).AUTOFIT()
  ENDFOR

  SELECT(lcCursor)
  USE

  IF FILE(tcXlsName)
    DELETE FILE (tcXlsName)
  ENDIF
  loWorkBook.SAVEAS(tcXlsName)
  loWorkBook.CLOSE()

  loExcel.QUIT()

ENDFUNC




Permalink : http://www.atoutfox.org/nntp.asp?ID=0000018527
20 088 messages dans le forum • Liste complète des messages

Publicité

Les pubs en cours :


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3