Cómo exportar PHP a Excel como en blanco
Hay que dar el código para encontrar el problema. Darte un ejemplo no es suficiente.
Existen varios métodos.
Básicamente, hay dos tipos de archivos exportados:
1: Formato similar a Excel. En realidad, este no es un archivo de Excel en el sentido tradicional. Se puede abrir correctamente solo porque. es compatible con Excel. Al guardar un archivo de este tipo después de modificarlo, 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, es necesario escribir un programa independiente.
2: Formato Excel, en comparación con el formato similar a Excel, el archivo generado por este método está más cerca del formato Excel real.
Si el chino exportado es confuso, 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);
1. Importación PHP de Excel
1: O utilice PHPExcel, sitio web oficial: /PHPExcel.
2: Utilice PHP-ExcelReader, dirección de descarga: pany'.chr(9);
echo 'fcompany'.
echo 'ecompany'.chr(9);
echo 'rcompany'.chr(9);
echo 'txtAddress'.chr(9) ;
echo 'txtCompanyTel'.chr(9);
echo 'txtFax'.chr(9);
echo 'txtPostCode'.chr(9 );
echo chr(13);
mientras ($classrow = $classres-gt; FetchRow())
{
// Salida a xls echo $classrow['id'].chr(9); echo $classrow['txtPEOClientCode'].chr(9); echo $classrow['jcompany'].chr(9); classrow['fcompany'].chr(9); echo $classrow['ecompany'].chr(9); echo $classrow['rcompany'].chr(9); echo $classrow['txtAddress'].chr (9); eco $classrow['txtCompanyTel'].chr(9); echo $classrow['txtFax'].chr(9); echo $classrow['txtPostCode'].chr(9);
}
Ahora usando Php-excel (/p/php-excel/downloads/list), el código también es muy simple:
require (dirname (__FILE__) ."./class-excel-xml.inc.php");
$sql = "SELECT * FROM " $ecs-gt;table('miembro')."
$classres = $db-gt;Ejecutar($sql);
mientras($classrow = $classres-gt;FetchRow())
{
$doc[] =array ($classrow['txtPEOClientCode'], $classrow['jcompany'], $classrow['txtBillTo']);
} p>
$xls = nuevo Excel_XML;
$xls-gt;addArray($doc);
$xls-gt;generateXML("mytest"); p>
Utilicé utf-8 y el resultado fueron caracteres confusos. Si reemplazaba $v con utf8_encode($v) en class-excel-xml.inc.php, no habría caracteres confusos.
1: En primer lugar, recomendamos el extremadamente popular sitio web oficial PHPExcel: /PHPExcel
Se puede importar y exportar. Puede exportar el formato office2007 y es compatible con 2003.
Puedes estudiar los documentos y ejemplos del paquete de descarga tú mismo.
Copia el ejemplo:
/PHPExcel
lt;?php
ini_set("display_errors", 1); Mostrar mensaje de error
ini_set('include_path', ini_get(' include_path').'; D:\\PHP\\\\PHPExcel 1.6.6\\\\Tests\\classes\\') ;//establecer esta página incluye ruta
include "classes/PHPExcel.php";
include "classes/PHPExcel/Writer /Excel5.php";
/Creando un excel
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter-gt; ("xxx.xls");
--------------------------------- -------------------------------------------------- - --
lt;?
//¿Establecer la ruta de inclusión de la biblioteca PHPExcel? .path_separator .''D:\workspace\biznaligy_eh\dev_src\includes\PHPExcel' .PATH_SEPARATOR .get_include_path());
require_once 'PHPExcel.php';?
require_once 'PHPExcel/Writer/Excel5.php';?
require_once 'PHPExcel/Writer/Excel2007.php'; // ¿para formato excel-2007?
// Crear un objeto de procesamiento ¿Ejemplo?
$objExcel = new PHPExcel();?
// ¿Crear una instancia de objeto de escritura en formato de archivo, descomentar?
$objWriter = new PHPExcel_Writer_Excel5($objExcel);?// ¿Para otras versiones del formato?
//o
//$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // ¿Para formato 2007?
//$objWriter-gt; (verdadero);?
//¿Establecer propiedades básicas del documento?
$objProps = $objExcel-gt;getProperties();?
$objProps-gt;setCreator("Zeal Li");?
$objProps -gt;setLastModifiedBy("Zeal Li");?
$objProps-gt;setTitle("Prueba de Office XLS
Documento de prueba"); ?
$objProps-gt; setSubject("Documento de prueba de Office XLS, demostración"); ?
$objProps-gt; setDescription("Documento de prueba, generado por PHPExcel.");?
$objProps-gt;setKeywords("office excel PHPExcel");?
$objProps-gt;setCategory("Prueba");?
// Establece el índice de la hoja de trabajo actual para operaciones de contenido posteriores.
// En términos generales, la llamada explícita solo es necesaria cuando se trabaja con varias hojas de trabajo >//De forma predeterminada, PHPExcel lo hará. crear automáticamente la primera hoja de trabajo y establecer SheetIndex=0
$objExcel-gt;setActiveSheetIndex(0);?
$objActSheet = $objExcel-gt;getActiveSheet();?
//¿Establecer el nombre de la hoja de trabajo activa actual?
$objActSheet-gt;setTitle('Test Sheet');?
//Establecer el contenido de la celda
// ¿Dejar que PHPExcel determine automáticamente el tipo de contenido de la celda en función del contenido de entrada
$objActSheet-gt;setCellValue(' A1', 'String Content'); ¿Contenido de la cadena?
$objActSheet-gt; setCellValue('A2', 26); // ¿Valor? // ¿Valor booleano?
$objActSheet-gt; setCellValue('A4', '=SUM(A2:A2)'); // ¿Fórmula? ¿tipo de contenido?
$objActSheet-gt;setCellValueExplicit('A5', '847475847857487584', PHPExcel_Cell_DataType::TYPE_STRING);?
/¿Fusionar celdas?
$objActSheet-gt;mergeCells('B1:C22');?
/¿Dividir celdas?
$objActSheet-gt; unmergeCells('B1:C22');?
//¿Establecer estilo de celda?
//¿Establecer ancho?
$objActSheet-gt; getColumnDimension('B')-gt; setAutoSize(true);?
$objActSheet-gt; getColumnDimension('A')-gt; 30);?
$objStyleA5 = $objActSheet-gt; getStyle('A5');?
// Establece el formato numérico del contenido de la celda.
// ¿Cómo utilizar PHPExcel_Writer_Excel5 para generar contenido?
// Tenga en cuenta aquí que las constantes definidas en la clase PHPExcel_Style_NumberFormat?
// Entre los diversos métodos de formato personalizados definidos en las variables constantes de la clase PHPExcel_Style_NumberFormat, todos los demás tipos funcionan normalmente, pero cuando setFormatCode?
// es FORMAT_NUMBER, el resultado real no tendrá el formato "0". ¿Debería ser así?
//Modifica el método getXf($style) en el código fuente de la clase PHPExcel_Writer_Excel5_Format.
// Agregar un ?
// Línea de código: ?
antes de if ($this-gt; _BIFF_version == 0x0500) { (cerca de la línea 363)//if($ifmt === '0') $ifmt = 1;?
//Establecer el formato en PHPExcel_Style_NumberFormat::FORMAT_NUMBER para evitar algunos números grandes.
// ¿Utiliza el siguiente método setAutoSize para mostrar el contenido de cada fila en notación científica?
// se muestra en notación científica. Utilice el método setAutoSize a continuación para mostrar el contenido de cada fila en su forma original.
$objStyleA5 -gt; getNumberFormat()-gt; setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);?
//¿Establecer fuente?
$objFontA5 = $objStyleA5-gt; getFont();?
$objFontA5-gt; setName('Mensajería nueva');?
$objFontA5 -gt;setSize(10);?
$objFontA5-gt;setBold(true);?
$objFontA5-gt;setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);? p>
$objFontA5-gt; p>
$objFontA5-gt;getColor()-gt;setARGB('FF99999999');?
// ¿Establecer alineación?
$objAlignA5 = $objStyleA5-gt;getAlignment();?
$objAlignA5-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);?
$objAlignA5 -gt;setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);?
//¿Establecer el borde?
$objBorderA5 = $objStyleA5-gt; getBorders();?
$objBorderA5-gt; getTop()-gt; setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);?
$objBorderA5-gt; getTop()-gt; getColor()-gt; setARGB('FFFF0000'); // color? setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);?
$objBorderA5-gt;getLeft()-gt; setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);?
$objBorderA5-gt;getRight( )-gt; setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);?
//¿Establecer el color de relleno?
$objFillA5 = $objStyleA5-gt;getFill();?
$objFillA5-gt;setFillType(PHPExcel_Style_Fill::FILL_SOLID);?
$objFillA5 -gt; getStartColor()-gt; setARGB('FFEEEEEEEEEE');?
//Copia la información de estilo de la celda especificada.
$
objActSheet-gt; duplicadoStyle($objStyleA5, 'B1:C22');?
//¿Agregar imágenes?
$objDrawing = new PHPExcel_Worksheet_Drawing();?
$objDrawing-gt; setName('ZealImg');?
$objDrawing-gt; 'Imagen insertada por Zeal');?
$objDrawing-gt;setPath('. /zeali.net.logo.gif');?
$objDrawing-gt;setHeight (36);?
$objDrawing-gt; setCoordinates('C23');?
$objDrawing-gt; setOffsetX(10);?
$objDrawing-gt;setRotation(15);?
$objDrawing-gt;getShadow()-gt;setVisible(true);?
$objDrawing-gt;getShadow() -gt;setDirection(36);?
$objDrawing-gt;setWorksheet($objActSheet);?
// ¿Agregar una nueva hoja de trabajo?
$objExcel-gt;getSheet(1)-gt;setTitle('Prueba 2');?
// ¿Proteger las células?
$objExcel-gt;getSheet(1)-gt;getProtection()-gt;setSheet(true);?
$objExcel-gt;getSheet(1)-gt; protectCells('A1:C22', 'PHPExcel');?
//¿Contenido de salida?
$outputFileName = "output.xls";?
//¿Salida al archivo?
////$objWriter-gt;save($outputFileName);?
//o?
header("Tipo de contenido: aplicación/ forzar-descarga");?
header("Tipo de contenido: aplicación/flujo de octeto");?
header("Tipo de contenido: aplicación/descarga"); ?
header('Content-Disposition: inline; filename="'. $outputFileName.'");?
header("Content-Transfer-Encoding: binario"); ?
header("Última modificación:" .gmdate("D, d M Y H:i:s") ."GMT");?
header("Control de caché : debe revalidar, verificación posterior = 0, pre-ch
eck=0");?
header("Pragma: no-cache");?
$objWriter-gt; save('php://output');? gt;
$objWriter-gt;save('php://salida');?