Excel está instalado?

Excel está instalado?

Postby jnavas » Thu Jul 13, 2023 1:24 pm

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.
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Excel está instalado?

Postby Willi Quintana » Thu Jul 13, 2023 2:04 pm

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()


 
User avatar
Willi Quintana
 
Posts: 1002
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Excel está instalado?

Postby karinha » Thu Jul 13, 2023 2:56 pm

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.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7213
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Excel está instalado?

Postby cnavarro » Thu Jul 13, 2023 6:13 pm

Code: Select all  Expand view

   oExcel   := ExcelObj()
   if oExcel == nil
      MsgAlert( FWString( "Excel not installed" ), FWString( "Alert" ) )
   endif
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 73 guests