2010-06-28 31 views
19

Actualmente estoy tratando de encontrar la mejor manera de crear un archivo .xls desde PHP. Me parece que todo lo que tengo que hacer es cambiar el tipo de contenido del encabezado a "application/vnd.ms-excel", y luego sacar los datos en un formato separado por comas. ¿Es ésta la mejor manera de hacer ésto?¿Cuál es la mejor manera de crear archivos XLS en PHP

¡Gracias por cualquier ayuda!
Metropolis

EDITAR

¿Sería malo para dar salida a los datos simplemente como HTML? Ya tengo una clase que me gustaría extender para este problema, por lo que preferiría mantenerme alejado de una solución de terceros. Solo necesito saber cuál sería la mejor manera de obtener los datos para aprovechar al máximo ese formato de archivo.

Después de mirar PHPExcel, parece ser la mejor solución para este problema. Aprecio todas sus respuestas y hubiera dado tres respuestas correctas si pudiera jaja. Pero hasta los votos tendrán que hacer :)

+1

Al cambiar el contenido del encabezado, escriba "application/vnd.ms-excel" y luego escriba un archivo XLS con contenido de texto con formato HTML, TAB o CSV. Sin embargo, esto es una especie de truco porque MS Excel podrá abrir el archivo aunque no sea un archivo XLS binario real, pero no podrá usar ninguna característica de Excel (como varias hojas). Un enfoque que utilicé es la aplicación MS Excel en sí misma, vea [aquí] (http://php.net/manual/en/class.dotnet.php). Otro enfoque que utilicé es [este] (http://www.gemboxsoftware.com/support-center/kb/articles/44-how-to-use-gembox-spreadsheet-in-php). –

Respuesta

13

Depende si desea un archivo CSV o un archivo XLS. Un archivo XLS puede incluir información de formato para las celdas, así como bloqueo de fila/columna, protecciones y otras características que son imposibles en un archivo CSV. Además, tenga en cuenta que Excel no admite correctamente el contenido codificado en UTF-8 al abrir archivos CSV.

Si desea un archivo con formato XLS, entonces necesita una biblioteca como PhpSpreadsheet que puede escribir un archivo con ese formato, o COM si eres servidor se está ejecutando en Windows con Excel instalado

0

Sí, es una forma posible - si necesita un archivo CSV claro que se abrirá en MS Excel.

Si necesita un archivo XLS rico, hay muchas opciones que incluyen el uso de archivos DLL de terceros como 'CarlosAg.ExcelXmlWriter.dll' para crear el archivo XLS. Puede buscar muestras del uso de esta dll en la red o Look here

3

Usted podría utilizar uno de los XML formats que Microsoft Office comprende.

Consulte el sitio de Microsoft OpenXML Developer para detalles/especificaciones.

Hay una biblioteca llamada PHPExcel que puede ver para ayudarlo con esto.

Por supuesto, todo esto depende de lo que entendemos por:

"obtener el máximo provecho de ese formato de archivo"

Si sólo tiene tablas simples con ningún formato, archivos CSV puede ser todo lo que necesitas; Sin embargo, si desea utilizar más funciones de una hoja de cálculo, le recomiendo que eche un vistazo a OpenXML.

2

Puede simplemente generar html y las versiones más nuevas de Excel lo leerán. Sin embargo, no sé cuánto formato puede hacer con eso.

Si necesita escribir datos, formatear o fórmulas ricas, he tenido éxito con PHPExcel.

Mi preferencia es escribir archivos CSV. CSV es un formato muy fácil de escribir y una conversión fácil de las secuencias de comandos de tabla html existentes. También tiene la ventaja de ser legible por una amplia variedad de programas de hojas de cálculo que no son de Microsoft. Si puede hacer de CSV el formato de archivo de elección para su aplicación web, obtendrá recompensas cuando tenga que aceptar una hoja de cálculo como entrada. Es mucho, mucho más fácil de leer y analizar un archivo CSV que un archivo de Excel.

+1

Estoy de acuerdo con usted sobre los archivos CSV Scott. Si dependiera de mí ese es el formato que estaría usando. Pero desafortunadamente necesito usar XLS .... – Metropolis

1

Descargo de responsabilidad: Trabajo en Expected Behavior, la compañía que desarrolló DocRaptor.

Dicho esto, puede usar DocRaptor para generar archivos XLS desde HTML. DocRaptor es un proyecto de Ruby on Rails, pero puedes usarlo con PHP. Aquí está nuestro ejemplo PHP:

DocRaptor PHP example

Aquí hay otro enlace a la página principal de DocRaptor:

HTML to Excel with DocRaptor

0

Puede comenzar a utilizar estos archivos. Creará un archivo Excel y lo ayudará a descargarlo. Descargar código Souce o demostración en vivo aquí: http://purpledesign.in/blog/to-generate-excel-using-php/

Puede añadir filas como este en el

01-sencillo-descarga-xlsx.php

$objPHPExcel->setActiveSheetIndex(0) 
      ->setCellValue('A1', 'Roll') 
      ->setCellValue('B1', 'Name') 
      ->setCellValue('C1', 'Total Classes') 
      ->setCellValue('D1', 'Class Attended') 
     ->setCellValue('E1', 'Percentage'); 

Puede imprimir los datos desde una base de datos como esta usando un ciclo while.

$i=2; 
while ($row = $database->fetch_array($result)) 
{ 

     $objPHPExcel->setActiveSheetIndex(0) 
      ->setCellValue('A'.$i, $row[0]) 
      ->setCellValue('B'.$i, $row[1]) 
      ->setCellValue('C'.$i, $row[2]) 
      ->setCellValue('D'.$i, $total) 
     ->setCellValue('E'.$i, round(($row[2]/$total)*100)); 
      $i++; 
} 
14

es bastante fácil, porque excel admite el código html. Así que solo necesita agregar un encabezado en la parte superior del archivo ... ¡y luego repetir su código html!

header ("Content-type: application/vnd.ms-excel"); 
header ("Content-Disposition: attachment; filename=foo_bar.xls"); 
echo "<table><tr><th>Header1</th></tr><tr><td>value1</td></tr></table>"; 

Esto generará un archivo de Excel!

+1

¡Así de fácil! Eres genial :) –

+0

¿Y cómo generar varias hojas? simplemente cierre y vuelva a abrir '

'? – Meloman

+0

** Así no es como funciona esto **. Así no es como funciona esto. - Solo presionando ** ** falsos encabezados MIME en la salida de HTML no es lo mismo que un archivo de Excel. Abrir un fragmento de HTML con una extensión de archivo incorrecta simplemente desencadenará una función de importación de mejor esfuerzo después de un par de advertencias de Excel. Difícilmente confiable. – mario

Cuestiones relacionadas