Page 1 of 1

Excel está instalado?

PostPosted: Thu Jul 13, 2023 1:24 pm
by jnavas
Saludos,
Necesito determina si excel está instalador para evitar incidencia en mi aplicación, evitando que el usuario lo reporte como una falla. preferiblemente indicarle mediante mensaje : Por favor instale excel.
Agradecidos por sus aportes.

Re: Excel está instalado?

PostPosted: Thu Jul 13, 2023 2:04 pm
by Willi Quintana
MI estimado, buenos dias
Code: Select all  Expand view

Function ImportarProv(oCn)
local cExcel, oExcel, oHoja, oWorkBook, nROws, nROs, cTmp, cNRuc, cNomb, nROw, cINsert, lOk, oDat

Return(Nil)

cExcel := cGetFile( "XLSx (*.xlsx)| *.xls|*.xlsx", "Seleccione la Hoja Excel", 2 ) ;

IF EMPTY(cExcel)
  Return(Nil)
EndIf

TRY
  oExcel:= TOleAuto():New("Excel.Application")
CATCH
  MsgInfo("La Hoja de Calculo No Está Instala", "Alerta")
  Return(Nil)
END

oExcel:Visible := .f. // .t. por si quieres ver la hoja abierta
oWorkbook := oExcel:WorkBooks:OPEN(cExcel)

oWorkbook := oExcel:GET("ActiveWorkBook")
oHoja := oExcel:GET("ActiveSheet")

nRows := oHoja:UsedRange:Rows:Count()

FOR nRow := 2 TO nRows           // obviamos los nombres de columnas

    CURSORWAIT()

    cTmp := oHoja:Cells(nRow, 1):Value

    TRY

    IF VALTYPE(cTmp) = "N"
       cNRuc := ALLTRIM(STR(cTmp,11,0))
    EndIf
    If VALTYPE(cTmp) = "U"
       cNRUc := "00000000"
    EndIf
    If VALTYPE(cTmp) = "C"
       cNRuc := ALLTRIM(cTmp)
    EndIf

    cTmp := oHoja:Cells(nRow, 2):Value
    IF VALTYPE(cTmp) <> "C"
       cNomb := "NN"
      Else
       cNomb := ALLTRIM(cTmp)
    EndIf

    CATCH
      cNomb := "NN"
    END

    cNomb := UPPER(ALLTRIM(cNomb))
    cNomb := LimpiaChar(cNomb)

    oDat := SQLQry(oCn, oDat, "SELECT ruc_dni FROM proveedor WHERE ruc_dni = '" + cNRuc + "'")

    If oDat:RecCount() = 0
        cInsert := "INSERT IGNORE INTO proveedor SET ruc_dni = '" + cNRuc + "', razon_social = '" + cNomb + "'"
      TRY
        lOk := SQLExec(oCn, cInsert)
      CATCH
        lOK := .t.
      END
    EndIf

    SysRefresh()

NEXT nRow

oWorkBook:CLOSE( .F. )    //oExcel:WorkBooks:End()
oExcel:Quit()
oExcel := NIL

CURSORARROW()


 

Re: Excel está instalado?

PostPosted: Thu Jul 13, 2023 2:56 pm
by karinha
Code: Select all  Expand view

// C:\FWH\SAMPLES\EXCELREM.PRG - kapiabafwh@gmail.com - 23/09/2022

#Include "FiveWin.ch"

// Defines para o segundo parâmetro - Ejemplo by Rochinha. FiveWin Brasil.

#define xlCSV            6 //        CSV    *.csv
#define xlCSVMSDOS      24 //        MSDOS CSV    *.csv
#define xlCSVWindows    23 //        Windows CSV    *.csv
#define xlDBF3           8 //        Dbase 3 format    *.dbf
#define xlExcel8        56 //        Excel 97-2003 Workbook    *.xls
#define xlHtml          44 //        HTML format    *.htm; *.html
#define xlTextMSDOS     21 //        MSDOS Text    *.txt

FUNCTION Main()

   HB_GCALL( .F. )

   SET CENTURY ON
   SET DATE BRITISH
   SET TIME FORMAT TO "HH:MM:SS"
   SET EPOCH TO YEAR( DATE() ) - 30
   SET SOFTSEEK OFF
   SET WRAP ON
   SETCANCEL( .F. )
   SET CONFIRM OFF
   SET DELETED ON
   SET _3DLOOK ON
   SET UNIQUE OFF
   SET ESCAPE OFF
   SET EXACT ON  // CONTROLA O :=, = e ==
   SET EXCLUSIVE OFF
   SET MULTIPLE OFF

   MsgRun( "AGUARDE... ABRINDO OS BANCOS DE DADOS.   ",                      ;
           "Por Favor, Espere Abertura. Pode demorar.",                      ;
           { || WinExec( Excel_Remtec() ), 3 } )

   DbCommitAll()
   DbUnLockAll()
   DbCloseAll()
   FreeResources()
   Release All
   SysRefresh()
   HB_GCALL( .T. )

   CLEAR MEMORY

   PostQuitMessage( 0 )

   QUIT

RETURN NIL

FUNCTION Excel_Remtec()

   LOCAL oExcel, oWorkbook, oWorksheet

   TRY

      oExcel := TOleAuto():New( "Excel.Application" )

   CATCH

      TRY

         oExcel = CreateObject( "Excel.Application" )

      CATCH

         MsgInfo( "Excel is not installed on this PC. " + ;
                  "You need Excel to continue", "Ooooopppsss" )

         RETURN( .F. )

      END

   END

   oWorkbook := oExcel:WorkBooks

   // Apertura del *.DBF
   oWorkbook:Open( "c:\temp\REMTEC.DBF" )

   oExcel:DisplayAlerts := .F.
   oExcel:Visible       := .T.

   oWorksheet := oExcel:Get( "ActiveSheet" )

   // Graba
   oWorksheet:SaveAs( "c:\temp\tabela.CSV",  6 ) // Segundo parâmetro informa o tipo de saída
   oWorksheet:SaveAs( "c:\temp\tabela.XLS", 56 ) // Segundo parâmetro informa o tipo de saída

RETURN NIL
// FIN
 


Regards, saludos.

Re: Excel está instalado?

PostPosted: Thu Jul 13, 2023 6:13 pm
by cnavarro
Code: Select all  Expand view

   oExcel   := ExcelObj()
   if oExcel == nil
      MsgAlert( FWString( "Excel not installed" ), FWString( "Alert" ) )
   endif