Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta excel. Mostrar todas las entradas
Mostrando entradas con la etiqueta excel. Mostrar todas las entradas

miércoles, 31 de mayo de 2023

Imprimir todos los archivos EXCEL de un directorio a .PDF con libreoffice

 



Necesita imprimir en formato .PDF cientos de ficheros que tengo en una carpeta de hojas de calculo de excel. Buscando encontré enta web: https://ciberninjas.com/5-cosas-que-puedes-hacer-con-libreoffice-desde-la-linea-de-comandos/ y 

En mi caso, tengo la impresora por defecto del tipo .PDF, (osea cuando imprimo, lo que hace es crear un fichero pdf) y con el siguiente comando lo conseguí hacer en un instante:


libreoffice -p *.xlxs


Para más opciones y comandos visita la pagina de referencia:

https://ciberninjas.com/5-cosas-que-puedes-hacer-con-libreoffice-desde-la-linea-de-comandos/

martes, 8 de febrero de 2022

Como imprimir todos los ficheros tipo .xlsx a pdf, sin abrirlos, que esten en una misma carpeta: Con libreoffice

 Como imprimir todos los ficheros tipo .xlsx a pdf, sin abrirlos, que esten en una misma carpeta:

 Con libreoffice


En la linea de comando:

libreoffice --headless --convert-to pdf *.xlsx

FUENTE:
https://askubuntu.com/questions/777162/how-to-convert-excel-spreadsheet-2007-to-pdf-in-linux

sábado, 30 de marzo de 2019

Tablas dinámicas en Python con Pandas

Tablas dinámicas en Python

con Pandas




Una de las cosa más útiles que he encontrado en las hojas de cálculo (llámese EXCEL o LIBREOFFICE CALC), son las tablas dinámicas para el tratamiento masivo de datos. Podemos resúmenes y analizar los datos que tenemos, para llegar a conclusiones y extraer la información que nos sea necesaria.

¿pero se puede prescindir de hojas de cálculo, y hacerlo mismo mediante un lenguaje de programación? La respuesta es SI, y en Python tenemos la libreria PANDAS, que nos permite hacer lo mismo.

A continuación os dejo un ejemplo con varios comentarios y "trucos" que yo he encontrado sobre el ejemplo original (os dejo al final de este articulo la referencia a la fuente original).

Ejemplo:
Tenemos un conjunto de datos sobre paises, continentes, población esperanza de vida, continente, etc... y necesitamos obtener varios datos:
1) esperanza de vida media por continente
2) esperanza de vida media por pais
3) esperanza de vida media por año y continente
4) esperanza de vida por año, continente, y agregando funcion  minima y maxima.

Solución:
0) Lo primero que tenemos que hacer es cargar la libreria pandas desde nuestro programa (o consola de python):

import pandas as pd

Una vez hecho esto, vamos a crear una variable que contenga la ruta de los datos.  En el ejemplo original, lo datos están alojados en en una dirección de internet:

data_url='https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv'
 Nota:
 El archivo esta en internet (en https://github.com/resbaz/r-novice-gapminder-files/blob/master/data/gapminder-FiveYearData.csv) , pero podemos descargarlo a nuestro ordenador en modo "raw", por ejemplo usando el comando wget
wget https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv 
 y cambiar la ruta apuntando al lugar donde lo hemos descargado
data_url='/home/nombre_usuario/Descargas/gapminder-FiveYearData.csv'
Y ahora lo leemos:

datos=pd.read_csv(data_url) 

Podemos ver los datos leidos,  usando el comando print:
print(datos.head(5))
Salida generada (las 5 primeras filas del archivo):



Ahora vamos a los puntos a resolver:
1)  esperanza de vida media por continente
Para ello  hacemos un subconjunto de datos, con las columnas cotinent y lifeExp
subdatos=datos[['continent','lifeExp']]

y creamos una variable con el resultado de la tabla dinamica:

tabla=pd.pivot_table(subdatos , values = 'lifeExp' , columns='continent')

y mostramos el resultado de esa tabla dinamica:

print(tabla)


El resultado seria:


2) esperanza de vida media por pais

Para ello  hacemos un subconjunto de datos, con las columnas country y lifeExp
subdatos=datos[['country','lifeExp']]

y creamos una variable con el resultado de la tabla dinamica:

tabla=pd.pivot_table(subdatos , values = 'lifeExp' , columns='country')

y mostramos el resultado de esa tabla dinamica:

print(tabla)

El resultado seria:
 country
Afghanistan                 37.478833
Albania                     68.432917
Algeria                     59.030167
Angola                      37.883500
Argentina                   69.060417
Australia                   74.662917
Austria                     73.103250
Bahrain                     65.605667
Bangladesh                  49.834083
Belgium                     73.641750
Benin                       48.779917
Bolivia                     52.504583
Bosnia and Herzegovina      67.707833
Botswana                    54.597500
Brazil                      62.239500
Bulgaria                    69.743750
Burkina Faso                44.694000
........ 
3) esperanza de vida media por año y continente
subdatos=datos[['continent','year','lifeExp']]
tabla=pd.pivot_table(subdatos , values = 'lifeExp' , index=['year'], columns='continent')
print(tabla)
El resultado:


4) esperanza de vida por año, continente, y agregando funcion  minima y maxima


subdatos=datos[['continent','year','lifeExp']]
tabla=pd.pivot_table(subdatos , values = 'lifeExp' , index=['year'], columns='continent', aggfunc = [min,max])
print(tabla)

El resultado por pantalla seria:
              min                                      max                   \
continent  Africa Americas    Asia  Europe Oceania  Africa Americas    Asia   
year                                                                          
1952       30.000   37.579  28.801  43.585  69.120  52.724   68.750  65.390   
1957       31.570   40.696  30.332  48.079  70.260  58.089   69.960  67.840   
1962       32.767   43.428  31.997  52.098  70.930  60.246   71.300  69.390   
1967       34.113   45.032  34.020  54.336  71.100  61.557   72.130  71.430   
1972       35.400   46.714  36.088  57.005  71.890  64.274   72.880  73.420   
1977       36.788   49.923  31.220  59.507  72.220  67.064   74.210  75.380   
1982       38.445   51.461  39.854  61.036  73.840  69.885   75.760  77.110   
1987       39.906   53.636  40.822  63.108  74.320  71.913   76.860  78.670   
1992       23.599   55.089  41.674  66.146  76.330  73.615   77.950  79.360   
1997       36.087   56.671  41.763  68.835  77.550  74.772   78.610  80.690   
2002       39.193   58.137  42.129  70.845  79.110  75.744   79.770  82.000   
2007       39.613   60.916  43.828  71.777  80.204  76.442   80.653  82.603   

                           
continent  Europe Oceania  
year                       
1952       72.670  69.390  
1957       73.470  70.330  
1962       73.680  71.240  
1967       74.160  71.520  
1972       74.720  71.930  
1977       76.110  73.490  
1982       76.990  74.740  
1987       77.410  76.320  
1992       78.770  77.560  
1997       79.390  78.830  
2002       80.620  80.370  
2007       81.757  81.235  

'Nota:
Los datos al ser muchas columnas, y sobrepasar el ancho de pantalla los divide al mostrarlo.


Código completo del  ejemplo: alojado en google drive


Fuente Original:
http://cmdlinetips.com/2018/12/pivot-table-in-python-pandas/

Otra pagina interesante:
https://www.analyticslane.com/2018/11/23/tablas-dinamicas-en-python-con-pandas/

sábado, 22 de diciembre de 2018

Trucos: Comparar el contenido de dos hojas de calculo (excel, libreoffice, etc)


Trucos: Comparar el contenido de dos hojas de calculo (excel, libreoffice, etc)





En la anterior entrada ( enlace ) os comente como comparar dos documentos de word (tambien es aplicable a documentos hechos con otros procesadores de textos), y  en esta entrada os dejo un video explicando el procedimiento para hojas de cálculos, es válido tanto para hojas de Excel, LibreOffice, etc...







Enlace descarga del notepad++ portable y con plugins de comparar documentos:

https://drive.google.com/drive/folders/167xxmtefU2UNt_e6s8lCc7oHcfPQucJ0



















domingo, 12 de febrero de 2017

Curso Completo de Hoja de Calculo



Curso Completo de LibreOffice Calc


Os dejo aqui un enlace a un curso de videostutoriales, muy completo sobre libreoffice Calc


Enlace: Lista de Reproduccion Videos Tutoriales LibreOffice Calc



Descarga de libreoffice5.3:

x86 deb:
http://donate.libreoffice.org/home/dl/deb-x86/5.3.0/es/LibreOffice_5.3.0_Linux_x86_deb.tar.gz

x64 deb:
http://donate.libreoffice.org/home/dl/deb-x86_64/5.3.0/es/LibreOffice_5.3.0_Linux_x86-64_deb.tar.gz

x64 rpm:
http://donate.libreoffice.org/home/dl/rpm-x86_64/5.3.0/es/LibreOffice_5.3.0_Linux_x86-64_rpm.tar.gz

y sino prueba este enlace:
http://es.libreoffice.org/descarga/libreoffice-nuevo/


Y una vez descargado, descomprime, y en directorio descompirmido, para instalar:
Para sistemas basados en  Debian/Ubuntu: sudo dpkg -i *.deb

Para sistemas basados en Fedora su -c 'yum install *.rpm'

Para sistemas basados en Mandriva: sudo urpmi *.rpm

Para otros sistemas que usan RPM (openSUSE, etc.): rpm -Uvh *.rpm






Os dejo el indice, que como veis, es muy completo:
  1. Lección 1 PRESENTACIÓN DEL CURSO E INSTALACIÓN DE LIBREOFFICE.
  2. Lección 2 PRESENTACIÓN GENERAL DE LA VENTANA DE INICIO.
  3. Lección 3 NOCIONES BÁSICAS. LA HOJA DE CÁLCULO: ¿QUÉ ES? Y OPERACIONES BÁSICAS CON LAS HOJAS DE CÁLCULO.
  4. Lección 4 NOCIONES BÁSICAS. INSERTAR DATOS EN LAS CELDAS Y EL TIPO O FORMATO DEL DATO.
  5. Lección 5 NOCIONES BÁSICAS. SELECCIONAR FILAS, COLUMNAS Y RANGOS. COPIAR, PEGAR, CORTAR. RELLENAR CELDAS.
  6. Lección 6 NOCIONES BÁSICAS. PRESENTACIÓN DE LOS DATOS EN TABLAS: FUENTE, ALINEACIÓN, BORDES, COLOR, ETC.
  7. Lección 7 NOCIONES BÁSICAS. FILAS Y COLUMNAS: ALTO Y ANCHO. INSERTAR Y ELIMINAR. OCULTAR Y MOSTRAR. CELDAS: DESPLAZAR, COMBINAR Y DIVIDIR.
  8. Lección 8 CALCULANDO. REFERENCIAS A CELDAS, A HOJAS Y A OTRO LIBRO. DIFERENCIA ENTRE REFERENCIA RELATIVA, ABSOLUTA Y MIXTA. SÍMBOLO $. OPCIÓN DE RELLENAR.
  9. Lección 9 CALCULANDO. OPERADORES BÁSICOS: ARITMÉTICOS, DE COMPARACIÓN Y DE TEXTO.
  10. Lección 10 CALCULANDO. FUNCIONES: ASISTENTE Y LISTADO DE FUNCIONES. OPCIÓN DE AUTOSUMA.
  11. Lección 11 CALCULANDO. FUNCIONES HABITUALES (I): SI - Y - O - SUMA - SUMAR.SI - SUMAR.SI.CONJUNTO.
  12. Lección 12 CALCULANDO. FUNCIONES HABITUALES (II): CONTAR – CONTARA - CONTAR.SI - CONTAR.SI.CONJUNTO.
  13. Lección 13 CALCULANDO. FUNCIONES HABITUALES (III): PROMEDIO - DESVEST - MEDIANA – MODA.UNO - MÁX - MÍN.
  14. Lección 14 CALCULANDO. FUNCIONES HABITUALES (IV): BUSCAR - BUSCARV – BUSCARH – COINCIDIR.
  15. Lección 15 CALCULANDO. FUNCIONES HABITUALES (V): CONCATENAR – DERECHA – IZQUIERDA - REEMPLAZAR - EXTRAEB.
  16. Lección 16 CALCULANDO. FUNCIONES HABITUALES (VI): TRANSPONER – ALEATORIO – JERARQUÍA - ELEGIR.
  17. Lección 17 CALCULANDO. FUNCIONES HABITUALES (VII): AHORA - HOY - FECHA – AÑO – MES – DIA – HORA – MINUTO – SEGUNDO.
  18. Lección 18 CALCULANDO. FUNCIONES HABITUALES (VIII): ABS – ENTERO - REDONDEAR – TRUNCAR.
  19. Lección 19 CALCULANDO. FUNCIONES HABITUALES (IX): EXP, LN, LOG10, POTENCIA, RAIZ, RESIDUO.
  20. Lección 20 CALCULANDO. FUNCIONES HABITUALES (X): PAGO –TASA – NPER - VA –VF.
  21. Lección 21 CALCULANDO. MENSAJES DE ERROR MÁS HABITUALES.
  22. Lección 22 MANEJANDO DATOS. ORDENAR.
  23. Lección 23 MANEJANDO DATOS. FILTRAR.
  24. Lección 24 MANEJANDO DATOS. FORMATO CONDICIONAL.
  25. Lección 25 MANEJANDO DATOS. FORMULARIO DE DATOS, OBTENER SUBTOTALES Y VALIDEZ DE LOS DATOS.
  26. Lección 26 MANEJANDO DATOS. IMPORTAR ARCHIVOS CSV Y DIVIDIR TEXTO EN COLUMNAS.
  27. Lección 27 MANEJANDO DATOS. REAGRUPAR DATOS DE CELDAS INDEPENDIENTES (OPCIÓN CONSOLIDAR) Y AGRUPAR DATOS MEDIANTE ESQUEMAS (OPCIÓN GRUPO Y ESQUEMA).
  28. Lección 28 MANEJANDO DATOS. MÚLTIPLES OPERACIONES.
  29. Lección 29 MANEJANDO DATOS. GRÁFICOS (I): SELECCIONAR TIPO DE GRÁFICO, INTERVALO DE DATOS A REPRESENTAR Y LEYENDA.
  30. Lección 30 MANEJANDO DATOS. GRÁFICOS (II): DIFERENTES TIPOS DE GRÁFICO Y SU PERSONALIZACIÓN.
  31. Lección 31 MANEJANDO DATOS. TABLAS DINÁMICAS: QUÉ SON Y CÓMO CREARLAS.
  32. Lección 32 HERRAMIENTAS. INMOVILIZAR PANELES Y DIVIDIR VENTANAS. PROTEGER DOCUMENTOS, HOJAS Y CELDAS. ABRIR CON CONTRASEÑA Y MODO DE SOLO LECTURA.
  33. Lección 33 HERRAMIENTAS. PERSONALIZAR MENÚS Y BARRAS DE HERRAMIENTAS.
  34. Lección 34 SALIDA DE DATOS. PREPARAR LA HOJA DE CÁLCULO PARA IMPRIMIR O EXPORTAR A PDF.



Fuente:
https://www.gambas-es.org/viewtopic.php?t=6183&p=37036#p37036

miércoles, 5 de febrero de 2014

Dibujar Circulos y Arcos de Circulos y Elipses en EXCEL y LibreOffice Calc

Dibujar Circulos y Arcos de Circulos y Elipses en 
EXCEL y LibreOffice Calc

Os traigo resuelto un problema que me han planteado esta mañana:

Se trata de dibujar en Excel (o LibreOffice Calc) un circulo, un arco y una elipse:

En principio pense que no se podia, pero buscando encontre esta página (ver ref 1), donde explicaban como hacer una circuferencia en Excel usando gráficos del tipo "XY (dispersión)":
Basicamente se trata de usar las ecuaciones del circulo e ir dándole valores de los grados para calcular su X e Y, luego para el tema del arco se usa  dos condiciones para comprabar que el angulo esta entre el intervalo del los angulos a dibujar, y asi coger los datos o no.

Para el circulo las formulas son:
CoorX= Xcentro + Radio * cos(angulo)
CoorY= Ycentro + Radio * seno(angulo)

Para la elipse:
CoorX= Xcentro + SemiEjeA * cos(angulo)
CoorY= Ycentro + SemiEjeB * seno(angulo)

La comprobación para dibujar el arco, es la siguiente:
=Si(AnguloCalculo>=AnguloInicial;Si(AnguloCalculo<=AnguloInicial;CogeValorCelda;0);0)

Como "truco" uso columnas auxiliares para hacer los cálculo y otras columnas para hacer las comprobaciones de los "Si..." y es este ultimo rango de Columnas y Filas la que se define como origen de datos del gráfico.


Dibujo de un circulo


Dibujo de un Arco de Circulo




Enlaces de descarga:
Enlace archivo EXCEL
Enlace archivo calc de LibreOffice

Nota:
Hay que ajustar las escalas Horizontal y Vertical y estirar el gráfico para que quede proporcionales.

Fuentes;
1) http://es.answers.yahoo.com/question/index?qid=20090213104753AAxM62x
2) http://es.wikipedia.org/wiki/Elipse

lunes, 28 de octubre de 2013

Excel: Poner el nombre del archivo y el nombre de la hoja en una celda

Excel: 

Poner el nombre del archivo y el nombre de la hoja en una celda




       Bueno, esta vez voy a tocar un tema sobre Excel que me ha traído de los pelos durante varias horas, visitando la documentación online de Microsoft (que ayuda más bien poco) y algunas páginas web, hasta que encontré la solución.

    Por cuestiones de organización, muchas veces nos interesa que al imprimir un parte de un documento, nos salga el nombre del archivo y el nombre de la pestaña. Normalmente se añade una cabecera o pie de pagina donde se incluye. Pero si esa parte del documento excel (una gráfica o tabla por ejemplo) va insertada en otro documento (por ejemplo un word), ya no tenemos esa opción. 

Existe una forma de poner el nombre del documento, su ruta e incluso el nombre de la pestaña en una celda, con lo cual podíamos insertar la gráfica o la tabla junto con el dato que nos interese .


Para hacer esto, en la celda que nos interese tenemos que poner estas fórmulas:

Poner ruta+nombre+pestaña:

=Celda("nombrearchivo")

Con esto se consigue poner el nombre completo (ruta+nombre+pestaña):
  • C:\Users\jsanchezberro\Documents\[pepito.xlsx]Hoja1

Poner nombre (sin ruta ni pestaña):

=EXTRAE(CELDA("nombrearchivo");ENCONTRAR("[";CELDA("nombrearchivo"))+1;ENCONTRAR("]";CELDA("nombrearchivo"))-ENCONTRAR("[";CELDA("nombrearchivo"))-1)

Con esta fórmula solo ponemos el nombre del archivo (sin ruta ni pestaña):
  • pepito.xlsx

Poner pestaña( sin ruta ni nombre):

=EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32)

Con esta fórmula ponemos el nombre de la pestaña:
  • Hoja1

Ejemplo:

Documento Word, con una gráfica Excel
mostrando datos del fichero donde guardamos la gráfica.



Espero que os sea útil. Saludos




Fuente:

Nota:
Si no ve completo este articulo es que tienes adblock activado. Por favor desactive adblock para este blog. Gracias

jueves, 10 de enero de 2013

Truco: Como quitar la clave a un archivo Excel 2010

Truco: Como quitar la protección a un archivo Excel 2010



En el trabajo donde uso Excel 2010 :( , hoy me he encontrado el siguiente problema: me han pasado una hoja de cálculo excel que no podía editar ya que venía con protección, y no me dejaba modificar fórmulas ni añadir filas ni cambiar formatos,etc.....
Archivo Excel original, con sus hojas con permisos.

El caso es que necesitaba modificarlo, y busque con google. Os dejo aquí el "tutorial" de como lo he conseguido quitar la protección:
  
Pasos a seguir:
1º Poner la "ficha Programador"
Ficha de Programador, en Excel 2010

Para habilitar la ficha Programador (normalmente no se ve), ve a:

En la ficha Archivo, elija Opciones para abrir el cuadro de diálogo Opciones de Excel.

Haga clic en Personalizar cinta de opciones en el lado izquierdo del cuadro de diálogo.

En Comandos disponibles en:, en el lado izquierdo del cuadro de diálogo, seleccione Comandos más utilizados.

En Personalice esta cinta de opciones, en el lado derecho del cuadro de diálogo, seleccione Fichas principales y, a continuación, active la casilla de verificación Programador.
Activar casilla de verificación Programador

Haga clic en Aceptar.

Después de que Excel muestre la ficha Programador, observe la ubicación de los botones Visual Basic,Macros y Seguridad de macros en la ficha.


2º Programa en VBA
Una vez instalada la ficha Programador, pulsar en el boton de "Visual Basic", y pegar en todas las pestañas de la hoja de calculo que esten protegidas, el código siguiente:
Public Sub decod() 
On Error Resume Next: c = Space(10) 
For a = 0 To 1: Do While p < 10: p = p + 1: Mid(c, p) = a: a = 0: Loop 
For j = 32 To 126: Unprotect c & a & Chr(j) 
If Not ProtectContents Then MsgBox "Clave » " & c & a & Chr(j): End 
Next: Do While a = 1: a = Mid(c, p, 1): p = p - 1: Loop: Next 
End Sub 

Pegado del código

Regresar a la hoja Excel que se desea desproteger.
Pulsar el el boton "Macros" y elegir la la que se quiere ejecutar (aparecerá la subrutina decod() y en unos segundos te desprotegerá la hoja.
En mi caso, mi fichero Excel tenia 11 hojas

Nota: el autor del código es pituco


Al final el archivo quedó asi:
Archivo de excel sin permisos para modificar las hojas que contiene













Nota:
Si no ve completo este articulo es que tienes adblock activado. Por favor desactive adblock para este blog. Gracias