Autor original: Podcast on the Iceberg Cuando vi este artículo, me sorprendió mucho la paciencia del autor original. Aunque usamos algunos en la vida diaria, no todos están enumerados por el autor. Cuando escribí Excel, usé pera. Library, también he usado el encabezado del paquete, y también he usado aquellos que usan smarty para simplemente reemplazar xml, sin mencionar csv. jeje. (No hablaré sobre el método COM. Hay muchos que son legibles. También he escrito artículos sobre el uso de wps para generar palabras, etc.)
Pero cuando estaba leyendo, solo usé uno. Olvidé cuál era, así que tuve que regresar y leer el código. Debido a que se basa en el principio de endeudamiento, no lo recuerdo.
Dirección original: http://xinsync.xju.edu.cn/index.php/archives/3858
Contenido original:
Recientemente, debido a las necesidades del proyecto, necesito desarrollar un módulo para exportar algunos datos del sistema a Excel, modificarlos y luego importarlos nuevamente al sistema. Aproveché la oportunidad para investigar un poco sobre esto y aquí hay algunos resúmenes.
Básicamente, existen dos tipos de archivos exportados:
1: Formato similar a Excel. En realidad, este no es un archivo de Excel en el sentido tradicional, simplemente porque Excel tiene una gran compatibilidad y se puede abrir correctamente. Después de modificar este tipo de archivo y luego guardarlo, normalmente se le preguntará si desea convertirlo a un archivo de Excel.
Ventajas: Sencillo.
Desventajas: es difícil generar el formato. Si se utiliza para importar, debe escribir el programa correspondiente usted mismo.
2: Formato Excel, correspondiente a Excel, el archivo generado por este método está más cerca del formato Excel real.
Si aparecen caracteres confusos al exportar chino, puede intentar convertir la cadena a gb2312. Por ejemplo, lo siguiente convierte $yourStr de utf-8 a gb2312:
$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);
a continuación se enumeran en detalle varios métodos.
1. Exportación de PHP a Excel
1: La primera recomendación es el extremadamente popular PHPExcel, sitio web oficial: http://www.codeplex.com/PHPExcel
Se puede importar y exportar, y se puede exportar al formato de Office 2007, que también es compatible con 2003.
El paquete descargado contiene documentos y ejemplos que puede estudiar por su cuenta.
A continuación se muestra un ejemplo de cómo copiar un párrafo:
código PHP
<?php
/**
* PHPExcel
*
* Copyright (C) 2006 - 2007 PHPExcel
*
* Esta biblioteca es software gratuito; puedes redistribuirla y/o
*modificarlo bajo los términos del Público General Reducido de GNU
* Licencia publicada por la Free Software Foundation;
* versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior.
*
* Esta biblioteca se distribuye con la esperanza de que sea útil,
* pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de;
* COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR Ver el GNU.
* Licencia Pública General Menor para más detalles.
*
* Deberías haber recibido una copia del GNU Lesser General Public
* Licencia junto con esta biblioteca; en caso contrario, escriba al Software Libre;
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 EE. UU.
*
* @categoría PHPExcel
* @paquete PHPExcel
* @copyright Copyright (c) 2006 - 2007 PHPExcel ( http://www.codeplex.com/PHPExcel )
* @license http://www.gnu.org/licenses/lgpl.txt LGPL
* @versión 1.5.0, 2007-10-23
*/
/** Informe de errores */
informe_error(E_ALL);
/** Incluir ruta **/
set_include_path(get_include_path() . PATH_SEPARATOR . '../Clases/');
/** PHPExcel */
incluir 'PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
incluya 'PHPExcel/Writer/Excel2007.php';
// Crea un nuevo objeto PHPExcel
echo date('H:i:s') "Crear nuevo objeto PHPExceln";
$objPHPExcel = nuevo PHPExcel();
// Establecer propiedades
echo date('H:i:s') ”Establecer propiedadesn”;
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);
$objPHPExcel->getProperties()->setTitle(”Documento de prueba XLSX de Office 2007”);
$objPHPExcel->getProperties()->setSubject(”Documento de prueba XLSX de Office 2007”);
$objPHPExcel->getProperties()->setDescrīption("Documento de prueba para Office 2007 XLSX, generado usando clases de PHP.");
$objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);
$objPHPExcel->getProperties()->setCategory(”Archivo de resultados de prueba”);
//Añadir algunos datos
echo date('H:i:s') "Agregar algunos datosn";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1′, 'Hola');
$objPHPExcel->getActiveSheet()->setCellValue('B2′, '¡mundo!');
$objPHPExcel->getActiveSheet()->setCellValue('C1′, 'Hola');
$objPHPExcel->getActiveSheet()->setCellValue('D2′, '¡mundo!');
// Cambiar nombre de hoja
echo date('H:i:s') "Cambiar nombre de hojan";
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Establece el índice de la hoja activa en la primera hoja, para que Excel la abra como la primera hoja
$objPHPExcel->setActiveSheetIndex(0);
//Guardar el archivo Excel 2007
echo date('H:i:s') "Escribir en formato Excel2007n";
$objWriter = nuevo PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
// Eco hecho
echo date('H:i:s') ” Archivo terminado de escribir.rn”;
2. Utilice la dirección de descarga de la clase Spreadsheet_Excel_Writer de Pear: http://pear.php.net/package/Spreadsheet_Excel_Writer
Esta clase depende de OLE, dirección de descarga: http://pear.php.net/package/OLE
Cabe señalar que el formato del archivo Excel exportado es relativamente antiguo. Si lo guarda después de modificarlo, se le preguntará si desea convertirlo a un formato más nuevo.
Pero puedes configurar el formato, que es muy poderoso.
código PHP
<?php
require_once 'Hoja de cálculo/Excel/Writer.php';
// Creando un libro de trabajo
$libro de trabajo = nueva hoja de cálculo_Excel_Writer();
//enviar encabezados HTTP
$libro de trabajo->enviar('test.xls');
// Creando una hoja de trabajo
$worksheet =& $workbook->addWorksheet('Mi primera hoja de trabajo');
//Los datos reales
$hoja de trabajo->write(0, 0, 'Nombre');
$hoja de trabajo->write(0, 1, 'Edad');
$hoja de trabajo->write(1, 0, 'John Smith');
$hoja de trabajo->escribir(1, 1, 30);
$hoja de trabajo->write(2, 0, 'Johann Schmidt');
$hoja de trabajo->escribir(2, 1, 31);
$hoja de trabajo->write(3, 0, 'Juan Herrera');
$hoja de trabajo->escribir(3, 1, 32);
//Enviemos el archivo
$libro->cerrar();
?>
3: Utilice Smarty para generar formatos compatibles con archivos XML o HTML que cumplan con las especificaciones de Excel, que es una solución de exportación perfecta. Sin embargo, el archivo exportado es esencialmente un archivo XML. Si se utiliza para importar, debe procesarse por separado.
Para obtener más información, consulte la publicación de Rardge Hero: http://bbs.chinaunix.net/viewthread.php?tid=745757
Cabe señalar que si el número de filas en la tabla exportada es incierto, es mejor ponerlo "ss:" en la plantilla: elimine cosas como ExpandedColumnCount=”5″ ss:ExpandedRowCount=”21″”.
4. Utilice la función de paquete para imprimir los símbolos de salto de oración que simulan el formato de Excel. Después de modificarlo y guardarlo en Office 2003, no aparecerá ningún mensaje. Se recomienda este método.
La desventaja es que no tiene formato.
código PHP
<?php
// Enviar encabezado
encabezado("Pragma: público");
encabezado("Expira: 0");
encabezado ("Control de caché: debe revalidar, verificación posterior = 0, verificación previa = 0");
header("Tipo de contenido: aplicación/descarga forzada");
header("Tipo de contenido: aplicación/flujo de octeto");
header("Tipo de contenido: aplicación/descarga");;
encabezado ("Disposición de contenido: archivo adjunto; nombre de archivo = prueba.xls");
encabezado("Codificación-transferencia-de-contenido: binario ");
//Celda de datos XLS
xlsBOF();
xlsWriteLabel(1,0,"Mi línea uno de Excel");
xlsWriteLabel(2,0,"Mi línea dos de Excel: ");
xlsWriteLabel(2,1,"Hola a todos");
xlsEOF();
función xlsBOF() {
paquete de eco("ssssss", 0×809, 0×8, 0×0, 0×10, 0×0, 0×0);
devolver;
}
función xlsEOF() {
paquete de eco("ss", 0×0A, 0×00);
devolver;
}
function xlsWriteNumber($Fila, $Col, $Valor) {
paquete de eco("sssss", 0×203, 14, $Fila, $Col, 0×0);
paquete de eco("d", $Valor);
devolver;
}
función xlsWriteLabel($Fila, $Col, $Valor) {
$L = strlen($Valor);
paquete de eco("ssssss", 0×204, 8 + $L, $Fila, $Col, 0×0, $L);
eco $Valor;
devolver;
}
?>
Sin embargo, el autor falló al usarlo en un sistema Linux de 64 bits y todos los símbolos que separaban oraciones se convirtieron en caracteres confusos.
5. Cómo utilizar tabulaciones y saltos de línea
El carácter de tabulación "t" permite a los usuarios separar columnas en la misma línea, y el carácter de nueva línea "tn" puede abrir la siguiente línea.
<?php
header("Tipo de contenido: aplicación/vnd.ms-execl");
encabezado ("Disposición de contenido: archivo adjunto; nombre de archivo = myExcel.xls");
encabezado("Pragma: sin caché");
encabezado("Expira: 0");
/*primera línea*/
echo "hola"."t";
echo "mundo"."t";
hacer eco “tn”;
/*inicio de la segunda línea*/
echo “esta es la segunda línea”.”t”;
echo “Hola, niña bonita”.”t”;
hacer eco “tn”;
?>
6. Utilice com
Si su PHP puede abrir el módulo com, puede usarlo para exportar archivos de Excel
código PHP
<?PHP
$nombre de archivo = “c:/spreadhseet/test.xls”;
$hoja1 = 1;
$hoja2 = “hoja2″;
$excel_app = new COM("Excel.application") o Die ("No se conectó");
print “Nombre de la aplicación: {$excel_app->Aplicación->valor}n”;
imprimir “Versión cargada: {$excel_app->Aplicación->versión}n”;
$Workbook = $excel_app->Workbooks->Open(”$filename”) o Die(”No abrió $filename $Workbook”);
$Hoja de trabajo = $Libro de trabajo->Hojas de trabajo($hoja1);
$Hoja de trabajo->activar;
$excel_cell = $Hoja de trabajo->Rango(”C4″);
$excel_cell->activar;
$excel_result = $excel_cell->valor;
imprimir “$excel_resultadon”;
$Hoja de trabajo = $Libro de trabajo->Hojas de trabajo($hoja2);
$Hoja de trabajo->activar;
$excel_cell = $Hoja de trabajo->Rango(”C4″);
$excel_cell->activar;
$excel_result = $excel_cell->valor;
imprimir “$excel_resultadon”;
#Para cerrar todas las instancias de Excel:
$Libro de trabajo->Cerrar;
desarmado($Hoja de trabajo);
unset($Libro de trabajo);
$excel_app->Libros de trabajo->Cerrar();
$excel_app->Salir();
desarmado($excel_app);
?>
Un mejor ejemplo: http://blog.chinaunix.net/u/16928/showart_387171.html
1. Importación de PHP a Excel
1: Todavía uso PHPExcel, sitio web oficial: http://www.codeplex.com/PHPExcel .
2: Utilice PHP-ExcelReader, dirección de descarga: http://sourceforge.net/projects/phpexcelreader
Ejemplo:
código PHP
<?php
require_once 'Excel/reader.php';
// ExcelFile($nombre de archivo, $codificación);
$datos = nueva hoja de cálculo_Excel_Reader();
// Establecer codificación de salida.
$datos->setOutputEncoding('utf8′);
$datos->read('jxlrwtest.xls');
error_reporting(E_ALL ^ E_NOTICE);
para ($i = 1; $i <= $datos->hojas[0]['numRows']; $i++) {
for ($j = 1; $j <= $datos->hojas[0]['numCols']; $j++) {
echo """.$datos->hojas[0]['celdas'][$i][$j]."",";
}
hacer eco “n”;
}
?>
----------
Este sitio adopta el acuerdo de derechos de autor Creative Commons, que requiere atribución, no comercial y coherencia. Este sitio acepta cualquier reimpresión no comercial, pero debe indicar que proviene de "Uncle Fatty's Simple Life", conservar el enlace original y también debe. indicar el título original y el enlace.