excel haskell com ole

Automatización de Excel con Haskell da una falla seg



com ole (1)

Puedo iniciar Excel con el siguiente script. Pero en ghci (7.4.1) tengo un error de segmentación cuando lo ejecuto.

No sé dónde buscar a partir de ahora. No tengo este error si elimino la línea

workSheets <- workBook # propertyGet_0 "Worksheets"

Aquí está el código. Puede ser que olvidé algo. Leí el código fuente de com.hs here , pero no me da ninguna pista.

import System.Win32.Com import System.Win32.Com.Automation -- -- createObjectExcel -- coming from Automation.hs and com.hs -- iidIDispatch_unsafe = mkIID "{00020400-0000-0000-C000-000000000046}" createObjExl :: IO (IDispatch ()) createObjExl = do clsidExcel <- clsidFromProgID "Excel.Application" pExl <- coCreateInstance clsidExcel Nothing LocalProcess iidIDispatch_unsafe return pExl fichierTest2 = "E:/Programmation/haskell/Com/qos1.xls" main = coRun $ do pExl <- createObjExl workBooks <- pExl # propertyGet_0 "Workbooks" workBook <- workBooks # propertyGet_1 "Open" fichierTest2 workSheets <- workBook # propertyGet_0 "Worksheets" workBooks # method_1_0 "Close" (0::Int) pExl # method_0_0 "Quit" mapM release [workSheets,workBook, workBooks, pExl]

Edite con el consejo de Gonzalez. Probé la depuración, pero no surgió ninguna información. Probé el código a mano en ghci, y parecía que la parte culpable era la función de liberación.

Cuando ingresé estos en ghci, obtuve el error de segmentación:

*Main> coInitialize *Main> pExl <- createObjExl *Main> release pExl 0

Ahora si presiono "pExl" tengo una referencia. ¿No debería ser eso establecido en nulo?

*Main> pExl <interface pointer = 0x020844cc> *Main> coUnInitialize *Main> :q leaving Ghci Segmentation Fault/access violation ...


Puede estar llamando al método workSheets desde una función estática. Intenta moverlo.

O bien, ha intentado declarar explícitamente el tipo de datos de ''Hojas de trabajo''

WorkSheets :: Int -> Int o (cualquier tipo debe ser).