Array a excel

No se si me podrías ayudar con algo de código en esto que tengo planeado realizar:
Tengo un array que es el producto de que es el producto de una serie de consultas a una based e datos MySQL, teniendo este array (en unas ocasiones tendrá ams información que otras dependiendo de las consultas realizadas)
Esta información la muestro toda en una tabla pero me gustaría exportar todo esto a un archivo de excel
e estado buscando y aunque eh encontrado algo de información en la web, me siento perdido en esta parte por eso no se si me puedas dar una ayuda con algo de código

2 Respuestas

Respuesta
1
Lo más sencillo es que hagas una exportación a un archivo CSV.
No sé qué valores tienes, pero si haces el output de la siguiente manera:
título1;título2;título3;título4
valor1;valor2;valor3;valor4
valor1b;valor2b;valor3b;valor4b
Etc...
(La primera línea con los títulos de cada columna, y luego en cada línea los valores que se van correspondiendo a los títulos) el excel es capaz de importarlo y puedes usar los datos.
Lo que no se puede hacer de esta manera, es añadir celdas con fórmulas, etc...
Ya me contarás si necesitas más ayuda.
Respuesta
1
Mucho que explicar.
Pero puedes empezar por analizarlo bien come se hace .
Es decir como pasar datos desde código php a pj .excel.
usando el objeto predefinido previamente : $excel = new COM("Excel.sheet") or die("No se puede instaciar el Excel");
Busca en internet :
Funciones COM que lo explican.
Abajo te envío un ejemplo del curso que he hecho y creo que sirve.
Esto es el script php para analizar
START->
<?
// Nombre del fichero de Excel que se guardará.
$nombre_fichero=$_SERVER['DOCUMENT_ROOT']."\alumnos\ficheros_del_curso\prueba_excel.xls";
$nombre_fichero_copia=$_SERVER['DOCUMENT_ROOT']."\alumnos\ficheros_del_curso\prueba_excel_copia.xls";
$nombre_hoja = "Hoja de Prueba";
// Creamos un objeto a partir de la clase COM del MS Excel.
$excel = new COM("Excel.sheet") or die("No se puede instaciar el Excel");
// Obtenemos las versión y la mostramos en el navegador.
echo "Nombre de la aplicaci&oacute;n: {$excel->Application->value}<BR>";
echo "Excel cargado, versi&oacute;n {$excel->Application->Version}<BR>";
// Desactivamos los avisos de Excel.
$excel->Application->DisplayAlerts = False;
// Abrimos un documento nuevo.
$wkb = $excel->application->Workbooks->Open($nombre_fichero)
    or Die ("No se puede abrir el fichero excel: ".$nombre_fichero);
// Creamos una copia del documento original para no perderlo.
$excel->Application->ActiveWorkbook->SaveAs($nombre_fichero_copia);
// Hacemos visible la ventana.
$excel->Application->Visible = 1;
//Abrimos la hoja del excel "Hoja de Prueba".
$hojas = $wkb->Worksheets($nombre_hoja);    //Seleccionamos la hoja.
$hojas->activate; //Activamos la hoja.
$celda = $hojas->Cells(2,1) ; // Seleccionamos la celda A2.
$celda->activate; // Activamos la celda.
echo "Valor de la celda = {$celda->value} <BR>"; // Mostramos el valor de la celda.
$celda->value = 55555; // Cambiamos el valor de la celda a 55555.
echo "Nuevo valor de la celda = {$celda->value}<BR> "; // Mostramos el nuevo valor.
// Recalculamos las fómulas de la hoja entera.
$hojas->Calculate;
// Obtenemos el resultado de la celda C3.
$celda = $hojas->Cells(3,3);    
$numero = number_format($celda->value, 0, ',', '.');
echo "Suma total = $numero.<BR>";
// Ejemplo del funcionamiento de una función incluída en el excel.
// Función: PMT (porcentaje interés/12 meses,Nº de pagos,Cantidad prestada).
$pago_mensual = $excel->application->pmt(0.08/12, 10, 10000);
$pago_mensual = sprintf("%.2f",abs($pago_mensual));
echo "La cantidad a abonar mensualmente por un pr&eacute;stamo de 10.000 ?
    al 8% de inter&eacute;s durante 12 meses es: $pago_mensual ?<BR>";
// Guardamos los cambios del libro.
$excel->Application->ActiveWorkbook->SaveAs($nombre_fichero_copia);                      
// En las líneas siguientes, que aparecen comentadas para no cerrar
// la hoja de cálculo Excel, se cierra Excel y se elimina el objeto de la memoria.
// Si queremos que se ejcuten estas instrucciones, hay que descomentarlas.
// $excel->application->ActiveWorkbook->Close("False");
// $excel->Release();
// $excel = null;
echo "<P><b>Documento finalizado</b>"
?>
<FIN
El texto del curso que lee detenamete
Las funciones COM
En el tratamiento de páginas y sitios web desde PHP es posible acceder a otros objetos y componentes de Windows. Para ello, hay que hacer uso de las funciones COM (Component Object Model), que tienen como finalidad servir de intermediarias entre los programas en sistemas operativos Microsoft. PHP está implementado para poder acceder a objetos y componentes de Windows.
En esta segunda Unidad del Curso avanzado de PHP vamos a explicar estas funciones y las aplicaremos en algunos de los ejemplos y ejercicios que integran este segundo bloque del curso.
Las funciones COM son una vía que permite identificar e intercambiar información entre objetos y componentes de diferentes sistemas, arquitecturas, lenguajes y máquinas. COM es el modelo más usado para conectar software de diferentes fabricantes. Proporciona un amplio conjunto de herramientas cliente-servidor de servicios integrados, fáciles de usar y eficientes en la conexión de los componentes de variados lenguajes.
En esta Unidad vamos a acceder desde el lenguaje PHP a dos programas de Microsoft: al procesador de texto Word y a la hoja de cálculo Excel. Lógicamente en nuestra máquina deben estar instalados también estos dos programas, en su versión 97 o superior.
Para obtener más información sobre lo que se puede hacer con las clases y los objetos mediante las funciones COM, aconsejamos acceder a la dirección http://www.microsoft.com/com/ .
Veamos, a continuación, las principales funciones COM y cómo se aplican dentro del código PHP.
El Capítulo 52 del Manual de PHP plantea una serie de preguntas sobre la posibilidad de usar las funciones COM desde Windows. En el mismo también puede obtenerse información sobre éste y otros temas relacionados.
Para poder integrar las funciones COM dentro de los scripts PHP es preciso utilizar una clase. Dentro de PHP, COM se comporta como una clase de la que es preciso siempre hacer al menos una instancia creando un objeto. Así pues, para poder usar las funciones que vamos a explicar a continuación, es necesario crear un objeto con la sentencia new COM. En el Ejemplo 1, donde accedemos desde PHP a MS Word, usamos esta instrucción para crear el objeto:
  $word = new COM("word.application")
          or die("No se puede instanciar el Word");
Como parámetro obligatorio de la clase COM debe indicarse el nombre del módulo al que vamos a acceder, en este caso la aplicación Word. Opcionalmente, pueden indicarse también, separados por comas, el nombre del servidor desde el cual será instanciada la clase y el código de página que debe utilizarse para hacer compatibles las cadenas entre las dos aplicaciones, PHP y Word en este ejemplo. En los ejemplos y ejercicios del curso no hacemos uso de estos dos últimos.
En el Ejemplo 2 accedemos desde PHP a MS Excel creando así el objeto:
   $excel = new COM("Excel.sheet")
            or die("No se puede instanciar el Excel");
Una vez creado el objeto, ya podemos hacer referencia al mismo a través de los métodos y propiedades definidos para éste dentro de la clase COM. Los métodos y propiedades de cada módulo de la clase COM pueden hallarse en el lenguaje del propio módulo. En la página citada al principio de este apartado puede obtenerse información abundante sobre este tema, además de la referencia a algunos libros sobre los módulos COM.
Siguiendo con el Ejemplo 1, una vez que hemos creado el objeto $word, podemos llevar a cabo estas operaciones:
Hacer visible la ventana de Word usando la propiedad Visible
   $word->Visible = 1;
Abrir un documento nuevo de Word con el método Add()
   $word->Documents->Add();
Establecer el tamaño de la fuente
   $word->Selection->Font->size=16;
Fijar la letra negrita
   $word->Selection->Font->bold=true;
Escribir un texto
   $word->Selection->TypeText("Esto es una prueba...");
Guardar el documento
   $word->Documents[1]->SaveAs($nombre_fichero);
Es conveniente que el alumno o alumna estudie bien los Ejemplos 1 y 2, donde puede ver el código y las páginas que permiten mostrar estas funciones dentro de los respectivos scripts de PHP.
El problema aquí se plantea cuando hay que identificar el nombre de las aplicaciones que debemos poner como parámetro de la clase COM. Hemos visto que para acceder al módulo MS Word hemos puesto "Word.Application". También hubiera sido válido poner "Word.Application.9". En el caso de MS Excel hemos puesto "Excel.Sheet". También hubiera sido válido poner "Excel.Application". Si hubiéramos querido acceder a ADOBE Acrobat, deberíamos haber puesto "Exch.Application" o "PdfDistiller.PdfDistiller".
¿Cómo podemos saber qué identificador debemos usar para referirnos a cada aplicación? No siempre es fácil. Lo más directo es buscar en nuestro ordenador el documento de ayuda "Referencia de Microsoft Forms Visual Basic", que suele estar en alguna de las carpetas de MS. Por ejemplo, en nuestro ordenador, que tiene instalada la versión Me de Windows, en la carpeta C:\Archivos de programa\Archivos comunes\Microsoft Shared\ VBA\VBA6\3082 está el fichero FM20. CHM. En éste y en otros muchos documentos de ayuda que tienen la extensión CHM pueden encontrarse muchas de las informaciones necesarias para poder hacer referencia a los nombres de los módulos, propiedades, métodos y eventos de cada aplicación.
Otra forma de saber cómo se escribe el nombre de la aplicación a la que queremos acceder es mirar en el registro de Windows (Inicio / Ejecutar regedit) dentro de la carpeta HKEY_CLASSES_ROOT. Al final de las carpetas con nombres de extensiones aparecen otras con el nombre de las aplicaciones instaladas en nuestro ordenador. Los identificadores de aplicaciones disponibles son los de las carpetas que tienen subcarpetas con el nombre CLSID.
Para conocer los nombres de los eventos, métodos y propiedades de las aplicaciones que integran Office 2000, hay que arrancar la aplicación en primero lugar; luego, es preciso abrir el Editor de Visual Basic con la opción adecuada o pulsando a la vez las teclas ALT+F11 y seleccionar el Examinador de Objetos con F2. Escribiendo el nombre del método o de la propiedad en la ventanita superior o buscando en la lista, seleccionamos una clase o miembro de la misma y con el botón derecho sobre su nombre accedemos a otra ventana donde podemos pedir ayuda, entre otras posibilidades, sobre el elemento seleccionado.
También puede obtenerse información en la página de Microsoft MSDN. Por ejemplo, para obtener información sobre MS Excel podemos acceder a la dirección siguiente:
http://msdn.microsoft.com/library/officedev/off2000/xltocobjectmodelapplication.htm
En versiones de PHP anteriores a la 4.0 había que usar funciones COM disponibles sólo para el entorno Windows. En el Capítulo VIII. Soporte de las funciones COM para Windows del Manual de PHP pueden consultarse estas funciones si el alumno decide utilizarlas . En este curso no las hemos usado, ya que, una vez creada la instancia de la clase COM, referenciamos directamente los métodos, propiedades y eventos del objeto creado, como se ha visto en los Ejemplos 1 y 2 de esta Unidad. A partir de la versión 4.0 de PHP se permite usar el constructor new COM directamente. Los objetos COM incluidos en el código PHP son tratados como si estuvieran en un entorno propio de Visual Basic o ASP (Active Server Pages).
Vale muchísimas gracias,
¿Una pregunta esta fiuncion COM no es una librería extra que hay que instalar cierto?
¿Con simplemente copiar y pegar este código me crea los dos archivos de excel y me pone en esas celdas los valores dados cierto?
¿O necesito descargar un archivo? (Si si me podrías mandar el link, e estado buscando por internet ero de pronto lo hice mal pero siempre me cambio funciones COM a funciones con php y lo que me sale es simplemente explicaciones de como usar funciones)
Mil gracias
¿Y otra pregunta si es excel 2003 simplementese cambia la extensión a xlsx?
Me genera el siguiente error o mejor dicho warning
Nombre de la aplicación: Microsoft Excel
Excel cargado, versión 12.0
Warning: (null)(): Invoke() failed: Ocurrió una excepción. Source: Microsoft Office Excel Description: Microsoft Office Excel cannot access the file 'C://AppServ/www/prueba_excel.xlsx'. There are several possible reasons: . The file name or path does not exist. . The file is being used by another program. . The workbook you are trying to save has the same name as a currently open workbook. inC:\AppServ\www\webs\finalyha\excel\prueba.php on line 14
No se puede abrir el fichero excel: C:/AppServ/www/prueba_excel.xlsx
gracias
Parece que todo esta bien.
Es decir, Excel cargado, versión 12.0, se significa que reconoce el software excel.
Luego:
Warning: (null)(): Invoke() failed: Ocurrió una excepción. Source: Microsoft Office Excel Description: Microsoft Office Excel cannot access the file 'C://AppServ/www/prueba_excel.xlsx'.
Quiere decir:
que excel no tiene acceso al fichero con ruta C://AppServ/www/prueba_excel.xlsx'.
Luego:
There are several possible reasons:
Posibles razones son: the file name or path does not exist.
Archivo no existe.(Entonces la ruta puede estar mal escrita, mira bien la ruta, es un problema muy común).
Luego:
The file is being used by another program.
Archivo puede estar abierto por otro programa.
Esto creo que es tu caso.
Cierra todos programas y envía script php en tu navegador.
Luego:
The workbook you are trying to save has the same name as a currently open workbook. inC:\AppServ\www\webs\finalyha\excel\prueba.php on line 14
El libro que está intentando guardar tiene el mismo nombre como un libro abierto. inc: \ AppServ www \ \ \ webs \ prueba.php finalyha excel \ en la línea 14
.
Verifica todos posibles problemas y si no encuentras la solución escribe me.
Pero lo mas importante es que el comando PHP $excel = new COM("Excel.sheet")
Es compatible con tu version de excel.
Si no estaria asi tendrias que buscar un comando de COM para php que abre tu version de excel.
Pero casi seguro que es la ruta.
O que cuando envías el script, el axcel esta abierto.
Escribe me el resultado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas