3ENGINE

Programación y otros cachivaches

Etiqueta: programacion

Página 6/21

Tecnologia

Ejecutar una macro externa en un .csv de Excel y grabar el resultado en formato .xls de Excel


Si necesitais darle un poco de vida y colorido a un fichero en formato .csv de Excel. Quizas os sirva este ejemplo. Se trata de ejecutar una macro previamente grabada para darle un nuevo formato a la hoja Excel (colorear columnas, cambiar de tamaño las letras, crear gráficos, etc…) para despues grabar el resultado en formato .xls. Comparto este código escrito en c# por si puede ser útil.

Requisito 1: antes de ejecutar el código es importante habilitar la opción «Confiar en el acceso a proyectos de Visual Basic» en la pestaña «Editores de confianza» que se encuentra en Herramientas>Macro> Seguridad.

Requisito 2: debeis tener instaladas las PIAS para Excel.

Código:


    using Microsoft.Office.Interop.Excel;
    using Microsoft.Vbe.Interop;
    .
    .
    public static class MacroExcel
    {
        /*
         * ejecuta macro sobre un csv y devuelve path del xls resultante
         */        public static string abrirCsvEjecutarMacroyGrabarXls(string pathFicheroCsv, string pathMacro, string nombreFuncionMacro)
        {            
            object missing = System.Reflection.Missing.Value;
            string pathXls = Path.ChangeExtension(pathFicheroCsv, "xls");
            //
            // abrir csv
            //
            ApplicationClass excel = new ApplicationClass();
            Workbooks books = excel.Workbooks;
            _Workbook book = books.Open(pathFicheroCsv, missing, missing, missing, missing, missing, missing, missing, missing,
                            missing, missing, missing, missing, missing, missing);
            try
            {
                //                      
                // abrir macro
                //
                VBComponentClass vbComp = (VBComponentClass)excel.VBE.ActiveVBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);
                vbComp.CodeModule.AddFromFile(pathMacro);
                //
                // ejecutar macro
                // 
                excel.Run(nombreFuncionMacro, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing);
                //
                // eliminar la macro del xls
                //
                vbComp.CodeModule.DeleteLines(1, vbComp.CodeModule.CountOfLines);
                //
                // grabar xls
                //
                File.Delete(pathXls);
                book.SaveAs(pathXls, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, missing,
                    missing, missing, missing, XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
            }
            finally
            {
                books.Close();
            }
            return pathXls;
        }
    }

Referencias:
Enlace 2
Enlace 1




Tecnologia

Split de una cadena separada por comas y acotada por dobles comillas (PHP y C#)


Si necesitais dividir una cadena en una matriz, donde los elementos de la cadena estan separados por coma (,) y opcionalmente un elemento puede estar acotado por doble comillas («). Una expresión regular y un poco de código extra puede ayudaros.

Código de prueba en c#:

     MatchCollection mc = Regex.Matches(
        ",\"hola desde\",\"una,dos,tres\",1,2,3,lineas,de codigo"+",", 
        "([^,\"]*,|\"[^\"]*\",)");
     foreach (Match m in mc)
     {
         System.Console.WriteLine(m.Value.Trim(',').Trim('"'));                               
     }

Función en PHP:

    function split_cadena_acotada($texto)
    {
        preg_match_all("([^,\"]*,|\"[^\"]*\",)", $texto.",", $matching_data);
        array_walk($matching_data[0], 'trim_value');
        return $matching_data[0];
    }
    function trim_value(&$value)
    { 
        $value = trim($value);
        $value = trim($value,',');
        $value = trim($value,'"');
    }



Tecnologia

Instalar Apache+MySQL+PHP+Extras en xubuntu 10.10


Para instalar Apache, MySQL y PHP tal cual:

sudo apt-get install mysql-server-5.1 apache2 php5 php5-mysql libapache2-mod-auth-mysql

Si deseamos debugar PHP es necesario instalar Xdebug:

apt-get install php5-xdebug

Por defecto está desactivado el modo debug, para activarlo editar /etc/php5/conf.d/xdebug.ini en modo administrador y añadir

xdebug.remote_enable=on

Captura de pantalla

Si deseamos instalar curl:

sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

Para reiniciar Apache y MySQL:

sudo /etc/init.d/apache2 restart
sudo service mysql restart

Para verificar que todo está bien y ver la configuración de PHP ir a /var/www/ y crear un archivo de nombre info.php con el siguiente contenido:

<?
phpinfo();
?>

Después escribimos http://localhost y debe aparece algo como esto:

Si deseamos que cada usuario tenga su carpeta de para desarrollar al estilo http://localhost/~usuario en este enlace explican cómo configurarlo.

Si utilizamos Netbeans, instalar el plugin de PHP. Ir a Herramientas>Complementos pestaña Complementos Disponibles e instalar el complemento PHP. Ahora ya podemos crear y debugar proyectos PHP desde Netbeans.

Referencias:

http://www.technoblog.com.ar/index.php/2010/05/como-instalar-apachemysqlphp-en-ubuntu-10-04/
http://blogs.oracle.com/netbeansphp/entry/ubuntu_php_netbeans
http://web.asistenciainformatica.org/2010/08/configurar-curl-en-ubuntu.html




Tecnologia

Fichero de ayuda de comandos de Windows


De la página de Microsoft podemos bajarnos un fichero de ayuda con todos los comandos de Windows (actualizado hasta Windows 7) que puede sacarnos de mas de un apuro:

Windows Command Reference

Importante: si al abrir el fichero de ayuda no funciona correctamente, es posible que esté bloqueado. Debemos ir a propiedades de fichero para desbloquearlo.