Author | Topic: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. | |
---|---|---|
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sat, 19 May 2018 07:29:06 +0200 Good morning dear friends. Is there someone who could help me? I am not capable to make new methods for the great class code of Hubert. Brandel and it would be a real shame not have others methods. For example I would need one for filters in rows or columns. I think that is not possible for him to continue with a new code, does not have time. If I knew I would do it but I have no knowledge for it. Regards. César. | |
Jonathan Leeming | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sat, 19 May 2018 08:33:53 -0600 On 5/18/2018 11:29 PM, César Calvo wrote: > Good morning dear friends. > Is there someone who could help me? > I am not capable to make new methods for the great class code of Hubert. > Brandel and it would be a real shame not have others methods. > For example I would need one for filters in rows or columns. > I think that is not possible for him to continue with a new code, does > not have time. If I knew I would do it but I have no knowledge for it. > Regards. > César. > > I was not aware of this Hurbet's class nor the existence of LibXL but after looking at the LibXL site was impressed with the speed specs.... Thanks César! Does anyone know if using HBLibXL & LibXL allows one to work with Excel password protected documents? I've spent a bit of time reading through the source but as of yet don't see provisions for passwords. Thanks... Jonathan jonathan.leeming@the-family-centre.com Edmonton, Alberta, Canada | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sat, 19 May 2018 17:27:06 +0200 El 19/05/2018 a las 16:33, Jonathan Leeming escribió: > On 5/18/2018 11:29 PM, César Calvo wrote: >> Good morning dear friends. >> Is there someone who could help me? >> I am not capable to make new methods for the great class code of >> Hubert. Brandel and it would be a real shame not have others methods. >> For example I would need one for filters in rows or columns. >> I think that is not possible for him to continue with a new code, does >> not have time. If I knew I would do it but I have no knowledge for it. >> Regards. >> César. >> >> > > I was not aware of this Hurbet's class nor the existence of LibXL but > after looking at the LibXL site was impressed with the speed specs.... > Thanks César! > > Does anyone know if using HBLibXL & LibXL allows one to work with Excel > password protected documents? I've spent a bit of time reading through > the source but as of yet don't see provisions for passwords. > > Thanks... Jonathan > > > Hi Jonathan, LibXL really good, I hope you can get your matter about the passwords. Regards. | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sun, 20 May 2018 13:10:52 +0200 El 19/05/2018 a las 7:29, César Calvo escribió: > Good morning dear friends. > Is there someone who could help me? > I am not capable to make new methods for the great class code of Hubert. > Brandel and it would be a real shame not have others methods. > For example I would need one for filters in rows or columns. > I think that is not possible for him to continue with a new code, does > not have time. If I knew I would do it but I have no knowledge for it. > Regards. > César. > > I suppose there is to do like this: *-------------------------------------------------------------------------------- CLASS xlFilter FROM _HBLibXL, xlBook, xlSheet PROTECTED EXPORTED METHOD init METHOD FilterColumnSetCustomFilter ENDCLASS *-------------------------------------------------------------------------------- METHOD xlFilter:init() return self *-------------------------------------------------------------------------------- METHOD xlFilter:FilterColumnSetCustomFilter() LOCAL uRet := nil uRet := FpQCall( {'LibXL','xlFilterColumnSetCustomFilterA'},::hHandle) RETURN uRet But how I don´t undertand the way of make classes I am lost. Is there someboy that speaks spanish and then we could contact personally? It is very maddening not see this questions. I attach HBLIBXL.PRG of HB, is free and here is where I desire to create a new class for filters bases on LibXL (http://www.libxl.com/) Thanks. César. HBLIBXL.PRG | |
Jose Antonio Diego Kereje | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sun, 20 May 2018 21:34:53 +0200 Hola César: He añadido a la clase de Hubert soporte para todos los métodos AutoFilter y FilterColumn siguiendo su mismo estilo de codificación. No uso esta librería, por lo que no he hecho ninguna prueba de uso. Saludos. Diego Hi Cesar: I have added to Hubert's class support for all AutoFilter and FilterColumn methods by following their coding style. I do not use this library, so I have not made any proof of use. Regards. Diego HBLibXL.PRG | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sun, 20 May 2018 22:20:16 +0200 El 20/05/2018 a las 21:34, Jose Antonio Diego Kereje escribió: > Hola César: > > He añadido a la clase de Hubert soporte para todos los métodos > AutoFilter y FilterColumn siguiendo su mismo estilo de codificación. No > uso esta librería, por lo que no he hecho ninguna prueba de uso. > > Saludos. Diego > > Hi Cesar: > > I have added to Hubert's class support for all AutoFilter and > FilterColumn methods by following their coding style. I do not use this > library, so I have not made any proof of use. > > Regards. Diego Gracias Diego, yo lo pruebo e informaré en el grupo. He puesto otro mensaje ya que al eliminar filas o columnas se crean referencias dirculares, veo que lo que pasa es que no se actualizan las fórmulas adecuadamente, te voy a mandar un email personal y te lo explico, si me puedes ayudar y logramos ver el problema informaríamos al grupo. Saludos. César. Thanks Diego, I'll try it and inform the group. I have put another message because when deleting rows or columns are done circulars references, I see that what happens is that the formulas are not updated properly, I am going to send you a personal email and I explain it to you, if you can help me and we can see the problem we would inform the group later. Regards. César. | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sun, 20 May 2018 22:50:45 +0200 El 20/05/2018 a las 21:34, Jose Antonio Diego Kereje escribió: > Hola César: > > He añadido a la clase de Hubert soporte para todos los métodos > AutoFilter y FilterColumn siguiendo su mismo estilo de codificación. No > uso esta librería, por lo que no he hecho ninguna prueba de uso. > > Saludos. Diego > > Hi Cesar: > > I have added to Hubert's class support for all AutoFilter and > FilterColumn methods by following their coding style. I do not use this > library, so I have not made any proof of use. > > Regards. Diego Diego, hay otro código ActiveX que utilizo mucho, me parece que no está en la Clase de Hubert oExcel:Cells(1,1):Select() Para posicionar el cursor en una determinada fila y columna. ¿Podrías decirme cómo es el código? Muchísimas gracias por tú ayuda. César. Diego, there is another ActiveX code I use always, it seems is not in Hubert's Class oExcel:Cells(1,1):Select () To put the cursor in a certain row and column. Could you tell me what the code looks like? Thank you very much for your help. César. | |
Jose Antonio Diego Kereje | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Sun, 20 May 2018 23:41:20 +0200 Hola de nuevo César: > Diego, hay otro código ActiveX que utilizo mucho, me parece que no está en > la Clase de Hubert Sí, es la forma en que yo he usado Excel&Xbase++ > oExcel:Cells(1,1):Select() > Para posicionar el cursor en una determinada fila y columna. > ¿Podrías decirme cómo es el código? Creo que estás confundido. No conocía esta librería, pero por el vistazo que he echado a las funciones de LibXl, no replican los métodos de la interface activeX del propio Excel, tampoco conceptualmente (como no podría ser de otro modo, dada la dimensión de las clases, métodos y variables que existen por debajo de Excel). Me ha picado la curiosidad y acabo de trasformar uno de los ejemplos de filtrado de la web de libXl para ver si los cambios que he realizado en el código de Hubert funcionan y para comprobar su efecto. Lo adjunto con este mensaje. Saludos. Diego test.zip | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Mon, 21 May 2018 00:00:43 +0200 El 20/05/2018 a las 23:41, Jose Antonio Diego Kereje escribió: > Hola de nuevo César: > >> Diego, hay otro código ActiveX que utilizo mucho, me parece que no >> está en la Clase de Hubert > > Sí, es la forma en que yo he usado Excel&Xbase++ > >> oExcel:Cells(1,1):Select() >> Para posicionar el cursor en una determinada fila y columna. >> ¿Podrías decirme cómo es el código? > > Creo que estás confundido. No conocía esta librería, pero por el vistazo > que he echado a las funciones de LibXl, no replican los métodos de la > interface activeX del propio Excel, tampoco conceptualmente (como no > podría ser de otro modo, dada la dimensión de las clases, métodos y > variables que existen por debajo de Excel). > > Me ha picado la curiosidad y acabo de trasformar uno de los ejemplos de > filtrado de la web de libXl para ver si los cambios que he realizado en > el código de Hubert funcionan y para comprobar su efecto. Lo adjunto con > este mensaje. > > Saludos. Diego Veo que funciona perfectamente, menudo favor me has hecho, es que la librería LibXl es rapidísima, a ver si con la ayuda de Pablo soluciono lo de las referencias circulares para que las fórmulas se actualicen bien. Bueno y el poder posicionar el cursor en la fila 1 y columna 1 Gracias de nuevo. | |
Jose Antonio Diego Kereje | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Mon, 21 May 2018 00:14:20 +0200 Hola Cesar: > Veo que funciona perfectamente, menudo favor me has hecho, es que la > librería LibXl es rapidísima, a ver si con la ayuda de Pablo soluciono lo > de las referencias circulares para que las fórmulas se actualicen bien. Creo que el problema puede ser interno a la propia libXl. En la clase de Hubert el método utilizado está así: METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) LOCAL uRet := nil DEFAULT nColFirst TO 0 DEFAULT nColLast TO 0 uRet := FpQCall( {'LibXL','xlSheetRemoveColA'},'__bo__sl__sl__sl',::hHandle,nColFirst,nColLast) RETURN uRet Pero según la documentación oficial debería ser así: METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) LOCAL uRet := nil DEFAULT nColFirst TO 0 DEFAULT nColLast TO 0 uRet := FpQCall( {'LibXL','xlSheetRemoveColA'},'__sl__sl__sl__sl',::hHandle,nColFirst,nColLast) RETURN uRet > Bueno y el poder posicionar el cursor en la fila 1 y columna 1 A mí me parece que no existe el concepto "cursor" ya que no hay interface visual y los métodos de modificación del contenido de las celdas te permiten apuntar a la que tú quieras. Saludos. Diego | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Mon, 21 May 2018 00:18:41 +0200 El 21/05/2018 a las 0:14, Jose Antonio Diego Kereje escribió: > Hola Cesar: > >> Veo que funciona perfectamente, menudo favor me has hecho, es que la >> librería LibXl es rapidísima, a ver si con la ayuda de Pablo soluciono >> lo de las referencias circulares para que las fórmulas se actualicen >> bien. > > Creo que el problema puede ser interno a la propia libXl. En la clase de > Hubert el método utilizado está así: > > METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) > LOCAL uRet := nil > DEFAULT nColFirst TO 0 > DEFAULT nColLast TO 0 > uRet := FpQCall( > {'LibXL','xlSheetRemoveColA'},'__bo__sl__sl__sl',::hHandle,nColFirst,nColLast) > > RETURN uRet > > Pero según la documentación oficial debería ser así: > > METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) > LOCAL uRet := nil > DEFAULT nColFirst TO 0 > DEFAULT nColLast TO 0 > uRet := FpQCall( > {'LibXL','xlSheetRemoveColA'},'__sl__sl__sl__sl',::hHandle,nColFirst,nColLast) > > RETURN uRet > > >> Bueno y el poder posicionar el cursor en la fila 1 y columna 1 > > A mí me parece que no existe el concepto "cursor" ya que no hay > interface visual y los métodos de modificación del contenido de las > celdas te permiten apuntar a la que tú quieras. > > Saludos. Diego Voy a contactar con el equipo de LibXl | |
Hubert Brandel | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Tue, 22 May 2018 08:33:39 +0200 The original docu from www.libxl.com says: bool removeCol(int colFirst, int colLast) Removes columns from colFirst to colLast. Returns false if error occurs. Get error info with Book::errorMessage(). On there reading a bool means a long with 0 is false, 1 (maybe also <> 0) is true. Does your change solve the problem with the error ? I can't read spanish, sorry. Regards Hubert Am 21.05.2018 um 00:18 schrieb César Calvo: > El 21/05/2018 a las 0:14, Jose Antonio Diego Kereje escribió: >> Hola Cesar: >> >>> Veo que funciona perfectamente, menudo favor me has hecho, es que la >>> librería LibXl es rapidísima, a ver si con la ayuda de Pablo >>> soluciono lo de las referencias circulares para que las fórmulas se >>> actualicen bien. >> >> Creo que el problema puede ser interno a la propia libXl. En la clase >> de Hubert el método utilizado está así: >> >> METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) >> LOCAL uRet := nil >> DEFAULT nColFirst TO 0 >> DEFAULT nColLast TO 0 >> uRet := FpQCall( >> {'LibXL','xlSheetRemoveColA'},'__bo__sl__sl__sl',::hHandle,nColFirst,nColLast) >> >> RETURN uRet >> >> Pero según la documentación oficial debería ser así: >> >> METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) >> LOCAL uRet := nil >> DEFAULT nColFirst TO 0 >> DEFAULT nColLast TO 0 >> uRet := FpQCall( >> {'LibXL','xlSheetRemoveColA'},'__sl__sl__sl__sl',::hHandle,nColFirst,nColLast) >> >> RETURN uRet >> >> >>> Bueno y el poder posicionar el cursor en la fila 1 y columna 1 >> >> A mí me parece que no existe el concepto "cursor" ya que no hay >> interface visual y los métodos de modificación del contenido de las >> celdas te permiten apuntar a la que tú quieras. >> >> Saludos. Diego > > Voy a contactar con el equipo de LibXl | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Tue, 22 May 2018 14:48:43 +0200 El 22/05/2018 a las 8:33, Hubert Brandel escribió: > The original docu from www.libxl.com says: > > bool removeCol(int colFirst, int colLast) > Removes columns from colFirst to colLast. > Returns false if error occurs. > Get error info with Book::errorMessage(). > > On there reading a bool means a long > with 0 is false, 1 (maybe also <> 0) is true. > Does your change solve the problem with the error ? > > I can't read spanish, sorry. > > Regards > Hubert > > > Am 21.05.2018 um 00:18 schrieb César Calvo: >> El 21/05/2018 a las 0:14, Jose Antonio Diego Kereje escribió: >>> Hola Cesar: >>> >>>> Veo que funciona perfectamente, menudo favor me has hecho, es que la >>>> librería LibXl es rapidísima, a ver si con la ayuda de Pablo >>>> soluciono lo de las referencias circulares para que las fórmulas se >>>> actualicen bien. >>> >>> Creo que el problema puede ser interno a la propia libXl. En la clase >>> de Hubert el método utilizado está así: >>> >>> METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) >>> LOCAL uRet := nil >>> DEFAULT nColFirst TO 0 >>> DEFAULT nColLast TO 0 >>> uRet := FpQCall( >>> {'LibXL','xlSheetRemoveColA'},'__bo__sl__sl__sl',::hHandle,nColFirst,nColLast) >>> >>> RETURN uRet >>> >>> Pero según la documentación oficial debería ser así: >>> >>> METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) >>> LOCAL uRet := nil >>> DEFAULT nColFirst TO 0 >>> DEFAULT nColLast TO 0 >>> uRet := FpQCall( >>> {'LibXL','xlSheetRemoveColA'},'__sl__sl__sl__sl',::hHandle,nColFirst,nColLast) >>> >>> RETURN uRet >>> >>> >>>> Bueno y el poder posicionar el cursor en la fila 1 y columna 1 >>> >>> A mí me parece que no existe el concepto "cursor" ya que no hay >>> interface visual y los métodos de modificación del contenido de las >>> celdas te permiten apuntar a la que tú quieras. >>> >>> Saludos. Diego >> >> Voy a contactar con el equipo de LibXl > Thansk Hubert. I requested help in Spanish because if the conversation is complicated and large for me is better. Sorry for this inconvenient. When I could prove get error I will send other email. At least now with the source of Diego the filters are done. Pablo explained me the way for know works C. Maybe in a future I could make new methods. Regards. César. | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Tue, 22 May 2018 21:07:07 +0200 El 21/05/2018 a las 0:14, Jose Antonio Diego Kereje escribió: > Hola Cesar: > >> Veo que funciona perfectamente, menudo favor me has hecho, es que la >> librería LibXl es rapidísima, a ver si con la ayuda de Pablo soluciono >> lo de las referencias circulares para que las fórmulas se actualicen >> bien. > > Creo que el problema puede ser interno a la propia libXl. En la clase de > Hubert el método utilizado está así: > > METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) > LOCAL uRet := nil > DEFAULT nColFirst TO 0 > DEFAULT nColLast TO 0 > uRet := FpQCall( > {'LibXL','xlSheetRemoveColA'},'__bo__sl__sl__sl',::hHandle,nColFirst,nColLast) > > RETURN uRet > > Pero según la documentación oficial debería ser así: > > METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) > LOCAL uRet := nil > DEFAULT nColFirst TO 0 > DEFAULT nColLast TO 0 > uRet := FpQCall( > {'LibXL','xlSheetRemoveColA'},'__sl__sl__sl__sl',::hHandle,nColFirst,nColLast) > > RETURN uRet > > >> Bueno y el poder posicionar el cursor en la fila 1 y columna 1 > > A mí me parece que no existe el concepto "cursor" ya que no hay > interface visual y los métodos de modificación del contenido de las > celdas te permiten apuntar a la que tú quieras. > > Saludos. Diego Diego, it works fine but What do for Delete rows filtered? I think libxl dosen´t it. I am searching in all documentation and ????? Regards. César. ************** PROCEDURE Test ************** LOCAL oBook, oSheet, oAutoFilter, oFilterColumn LOCAL cPath:= StrTran( AppName( .T. ), AppName(), '' ) LOCAL B oBook:= xlCreateXMLBook() oSheet:= oBook:bookAddSheet( 'Patata' ) oSheet:sheetWriteStr(0, 0, "Country") oSheet:sheetWriteStr(0, 1, "Road injures") oSheet:sheetWriteStr(0, 2, "Smoking") oSheet:sheetWriteStr(0, 3, "Suicide") oSheet:sheetWriteStr(1, 0, "USA"); oSheet:sheetWriteStr(2, 0, "UK") oSheet:sheetWriteNum(1, 1, 64); oSheet:sheetWriteNum(2, 1, 94) oSheet:sheetWriteNum(1, 2, 69); oSheet:sheetWriteNum(2, 2, 55) oSheet:sheetWriteNum(1, 3, 49); oSheet:sheetWriteNum(2, 3, 64) oSheet:sheetWriteStr(3, 0, "Germany"); oSheet:sheetWriteStr(4, 0, "Switzerland") oSheet:sheetWriteNum(3, 1, 88); oSheet:sheetWriteNum(4, 1, 93) oSheet:sheetWriteNum(3, 2, 46); oSheet:sheetWriteNum(4, 2, 54) oSheet:sheetWriteNum(3, 3, 55); oSheet:sheetWriteNum(4, 3, 50) oSheet:sheetWriteStr(5, 0, "Spain");oSheet:sheetWriteStr(6, 0, "Italy") oSheet:sheetWriteNum(5, 1, 86); oSheet:sheetWriteNum(6, 1, 75) oSheet:sheetWriteNum(5, 2, 47); oSheet:sheetWriteNum(6, 2, 52) oSheet:sheetWriteNum(5, 3, 69); oSheet:sheetWriteNum(6, 3, 71) oSheet:sheetWriteStr(7, 0, "Greece"); oSheet:sheetWriteStr(8, 0, "Japan") oSheet:sheetWriteNum(7, 1, 67); oSheet:sheetWriteNum(8, 1, 91) oSheet:sheetWriteNum(7, 2, 23); oSheet:sheetWriteNum(8, 2, 57) oSheet:sheetWriteNum(7, 3, 87); oSheet:sheetWriteNum(8, 3, 36) oBook:bookSave( cPath + "Out.xlsx" ) oAutoFilter:= oSheet:sheetAutoFilter() oAutoFilter:autoFilterSetRef( 0, 100, 0, 3 ) oFilterColumn:= oAutoFilter:autoFilterColumn( 0 ) oFilterColumn:FilterColumnSetCustomFilterEx("=","Japan","=","USA") oSheet:sheetApplyFilter() What do for Delete rows filtered? oSheet:SheetRemoveFilter() oBook:bookSave( cPath + "FilteredOut.xlsx" ) oBook:bookRelease() RETURN | |
Jose Antonio Diego Kereje | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Wed, 23 May 2018 00:24:15 +0200 | |
Hubert Brandel | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Wed, 23 May 2018 06:40:20 +0200 Hi, >> METHOD xlSheet:SheetRemoveCol( nColFirst, nColLast ) >> LOCAL uRet := nil >> DEFAULT nColFirst TO 0 >> DEFAULT nColLast TO 0 >> uRet := FpQCall( >> {'LibXL','xlSheetRemoveColA'},'__sl__sl__sl__sl',::hHandle,nColFirst,nColLast) >> RETURN uRet in this case you will get a numeric result ! If you don't want to write ... if 0 <> oSheet:SheetRemoveCol(... ) you should change it to >> RETURN uRet <> 0 0 is false but thats what __bo parameter should do too. | |
=?UTF-8?Q?C=c3=a9sar_Calvo?= | Re: Method for Filters in Excel files with LibXL and Class code of Hubert Brandel. on Mon, 21 May 2018 00:17:05 +0200 El 21/05/2018 a las 0:00, César Calvo escribió: > El 20/05/2018 a las 23:41, Jose Antonio Diego Kereje escribió: >> Hola de nuevo César: >> >>> Diego, hay otro código ActiveX que utilizo mucho, me parece que no >>> está en la Clase de Hubert >> >> Sí, es la forma en que yo he usado Excel&Xbase++ >> >>> oExcel:Cells(1,1):Select() >>> Para posicionar el cursor en una determinada fila y columna. >>> ¿Podrías decirme cómo es el código? >> >> Creo que estás confundido. No conocía esta librería, pero por el >> vistazo que he echado a las funciones de LibXl, no replican los >> métodos de la interface activeX del propio Excel, tampoco >> conceptualmente (como no podría ser de otro modo, dada la dimensión de >> las clases, métodos y variables que existen por debajo de Excel). >> >> Me ha picado la curiosidad y acabo de trasformar uno de los ejemplos >> de filtrado de la web de libXl para ver si los cambios que he >> realizado en el código de Hubert funcionan y para comprobar su efecto. >> Lo adjunto con este mensaje. >> >> Saludos. Diego > > Veo que funciona perfectamente, menudo favor me has hecho, es que la > librería LibXl es rapidísima, a ver si con la ayuda de Pablo soluciono > lo de las referencias circulares para que las fórmulas se actualicen bien. > > Bueno y el poder posicionar el cursor en la fila 1 y columna 1 > > Gracias de nuevo. Diego, ya que has cogido el concepto de la librería perfectaqmente, por si se te ocurre algo del problema de las referencias circulares. Al hacer oSheet:SheetRemoveRow(0,0) MEDIELE.xlsx borra la línea pero no actualiza las referencias de las celdas. Esta es mi conversación con Pablo Botella: Pues hay algo más que se tendrá que hacer ya que haga una u otra opción sigue saliendo lo de las referencias circulares. *-------------------------------------------------------------------------------- METHOD xlSheet:SheetRemoveRow( nRowFirst, nRowLast ) LOCAL uRet := nil DEFAULT nRowFirst TO 0 DEFAULT nRowLast TO 0 //uRet := FpQCall( {'LibXL','xlSheetRemoveRowA'},'__bo__sl__sl__sl',::hHandle,nRowFirst,nRowLast) uRet := FpQCall( {'LibXL','xlSheetRemoveRowA'},'__sl__sl__sl__sl',::hHandle,nRowFirst,nRowLast) RETURN uRet *-------------------------------------------------------------------------------- oBook := xlCreateXLSXBook(cName,ckey) oBook:BookSetKey(cName,ckey) if oBook # NIL LOG ! oBook:BookSetKey(cName,cKey) if ! oBook:BookLoad(cFil) msgbox("LibXL.DLL no va","Error") else oSheet := oBook:BookGetSheet(0) cVal := oSheet:SheetReadStr(0,0) cVal := Upper(SubStr(cVal,1,6)) oSheet:SheetRemoveRow(0,0) oBook:BookSave( cFil ) oBook:destroy() endif endif Solo se me ocurre contactar con el equipo de la librería LibXL De: Pablo Botella Navarro Enviado el: domingo, 20 de mayo de 2018 23:56 Para: César Calvo Asunto: Re: RV: New Methos for HBLibXL Class Justito eso ggg int xlSheetRemoveRow(SheetHandle handle, introwFirst, int rowLast) __sl__sl__sl__sl pero como dice que devuelve 0 si falla tambien puedes ponerle __bo__sl__sl__sl para que te devuelva .t. o .f. Removes rows from rowFirst to rowLast. Returns 0 if error occurs. Get error info with xlBookErrorMessage(). • int xlSheetRemoveCol(SheetHandle handle, intcolFirst, int colLast) y esta pues igual MEDIELE_COPIA.xlsx MEDIELE.xlsx |