Biblioteca de clases de PHP para hojas de cálculo de Excel: PHP_XLSXWriter (informe de big data, operación en segundo plano, descarga del navegador)

inserte la descripción de la imagen aquí

PHP_XLSXWriter es una biblioteca PHP para generar archivos xlsx de Microsoft Excel 2007+. XLSX es un formato para almacenar datos de hojas de cálculo utilizando un estándar de archivo abierto basado en XML para Excel 2007 y versiones posteriores. La biblioteca PHP_XLSXWriter proporciona una API simple para escribir datos de matrices PHP en archivos XLSX. Puede escribir archivos que contengan varias hojas de trabajo y grandes cantidades de datos, y utiliza el ajuste automático para manejar grandes volúmenes de datos.

En comparación con otras bibliotecas de Excel, las principales ventajas de PHP_XLSXWriter son:

  1. Alto rendimiento: PHP_XLSXWriter utiliza la función zipArchive para comprimir archivos de datos, lo cual es rápido y los archivos generados son relativamente pequeños.

  2. Operación estable: PHP_XLSXWriter no necesita depender de otras bibliotecas o complementos para ejecutarse, y es más portátil que otras bibliotecas.

  3. Código simple y fácil de usar: la API de PHP_XLSXWriter es simple, flexible, legible y fácil de mantener.

  4. Compatibilidad con grandes conjuntos de datos: PHP_XLSXWriter puede manejar grandes cantidades de datos, y la tecnología de procesamiento adaptativo de grandes volúmenes de datos adoptada es muy confiable cuando se trata de grandes conjuntos de datos.

1. La diferencia entre PHP_XLSXWriter y PHPExcel

Tanto PHP_XLSXWriter como PHPExcel son bibliotecas de clases de PHP utilizadas para operar hojas de cálculo de Excel, cuyas diferencias se reflejan principalmente en los siguientes aspectos:

  1. Velocidad y consumo de memoria

Comparado con PHPExcel, PHP_XLSXWriter es más rápido cuando opera una gran cantidad de datos y también ahorra recursos de memoria.

  1. dependencias externas

PHPExcel necesita depender de bibliotecas de terceros como LibreOffice u OpenOffice para operar archivos de Excel, mientras que PHP_XLSXWriter no requiere dependencias externas y puede generar directamente archivos de hojas de cálculo en formato OpenXML.

  1. Funcionalidad y Flexibilidad

PHPExcel es muy rico en funciones, admite operaciones de lectura y escritura en varios formatos de Excel y también puede manejar algunas operaciones avanzadas de Excel, como cálculos de fórmulas. En contraste, aunque PHP_XLSXWriter no es tan poderoso como PHPExcel, su diseño es más flexible y puede procesar y formatear datos fácilmente.

  1. soporte para desarrolladores

PHPExcel ha anunciado el final del mantenimiento y soporte desde 2018. Aunque todavía se puede usar, es posible que encuentre algunos problemas de compatibilidad y seguridad en el futuro. Por el contrario, PHP_XLSXWriter todavía se mantiene y desarrolla activamente, y habrá más mejoras funcionales y de rendimiento en el futuro.

En resumen, si necesita un alto grado de flexibilidad y rendimiento para las operaciones con archivos de Excel, puede elegir PHP_XLSXWriter. Si necesita procesar archivos complejos de Excel y usar operaciones avanzadas de Excel, puede usar PHPExcel. Sin embargo, teniendo en cuenta que PHPExcel ha detenido el desarrollo y el soporte, se recomienda utilizar una nueva biblioteca de clases como PhpSpreadsheet.

Dos, el uso de PHP_XLSXWriter

1. Pasos para usar

PHP_XLSXWriter es una biblioteca de clases de PHP para generar hojas de cálculo en formato Microsoft Excel OpenXML (xlsx). El uso de la biblioteca PHP_XLSXWriter puede ser muy conveniente para generar hojas de cálculo de Excel y admite múltiples tipos de datos y las diversas opciones de formato de Excel. Aquí hay algunos pasos básicos para usar PHP_XLSXWriter:

  1. Descargue e instale la biblioteca de clases PHP_XLSXWriter: Portal . Esta biblioteca de clases se puede descargar en Github y los archivos descargados se pueden colocar en cualquier parte del proyecto.

  2. Cree una instancia de XLSXWriter. el código se muestra a continuación:

require_once 'path/to/XLSXWriter.php';
$writer = new XLSXWriter();
  1. Configure la información básica escrita en la hoja de cálculo de Excel, como el título, el nombre de la hoja de trabajo, etc. El código de ejemplo es el siguiente:
$writer->setTitle('My Excel Document');
$writer->setSubject('Document Subject');
$writer->setAuthor('Author Name');
$writer->setDescription('Document Description');
$writer->setKeywords('keywords, go, here');

$sheet_name = 'Sheet1';
$writer->writeSheetHeader($sheet_name, array('Column 1'=> 'string', 'Column 2'=> 'string', 'Column 3'=> 'string', 'Column 4'=> 'string', 'Column 5'=> 'string', 'Column 6'=> 'string'));
  1. Escribir datos en una hoja de cálculo de Excel. El código de ejemplo es el siguiente:
$data = array(
       array('Value 1-1', 'Value 1-2', 'Value 1-3', 'Value 1-4', 'Value 1-5', 'Value 1-6'),
       array('Value 2-1', 'Value 2-2', 'Value 2-3', 'Value 2-4', 'Value 2-5', 'Value 2-6'),
       array('Value 3-1', 'Value 3-2', 'Value 3-3', 'Value 3-4', 'Value 3-5', 'Value 3-6'),
       array('Value 4-1', 'Value 4-2', 'Value 4-3', 'Value 4-4', 'Value 4-5', 'Value 4-6'),
       array('Value 5-1', 'Value 5-2', 'Value 5-3', 'Value 5-4', 'Value 5-5', 'Value 5-6'),
);

foreach($data as $row) {
    
    
       $writer->writeSheetRow($sheet_name, $row);
}
  1. Guarde la hoja de cálculo de Excel. El código de ejemplo es el siguiente:
$filename = 'my_excel_file';
$writer->writeToFile($filename . '.xlsx');

Lo anterior es el proceso básico de usar la biblioteca PHP_XLSXWriter para generar archivos de Excel. Puede ajustar los códigos de cada paso según las necesidades reales para lograr el efecto que desea.

2. Descarga en segundo plano

La encapsulación de funciones es la práctica de combinar una serie de operaciones relacionadas en una función y proporcionar una interfaz unificada con el mundo exterior. Sus principales beneficios son los siguientes:

  1. Mejorar la reutilización y el mantenimiento del código

Abstraiga algunas operaciones comunes en funciones y organice el código de forma modular, lo que ayuda a mejorar la reutilización y la mantenibilidad del código, ya que diferentes áreas de código pueden compartir la misma función sin tener que escribirla repetidamente.

  1. Mejorar la legibilidad del código

Usar el nombre de la función para describir la función puede mejorar la legibilidad del código y hacer que el código sea más fácil de entender y mantener. A través de la encapsulación, el código se puede modularizar, lo cual es fácil de entender y mantener.

  1. Mejore la encapsulación y la seguridad del código

La encapsulación puede ocultar detalles internos y solo exponer las interfaces necesarias, lo que mejora la encapsulación y la seguridad del código. La encapsulación también puede garantizar la integridad de los datos al restringir el acceso a los datos internos, evitando así el peligro de que los datos sean manipulados malintencionadamente.

  1. Simplifique la implementación y el mantenimiento del código

Al encapsular algunas operaciones comunes, la complejidad de la implementación y el mantenimiento del código se puede simplificar en gran medida, se puede reducir la posibilidad de errores y los desarrolladores pueden concentrarse más en la implementación de la lógica comercial.

En conclusión, la encapsulación de funciones es una excelente manera de ayudar a escribir código eficiente, legible, mantenible, robusto y seguro.

/*封装函数
$data,array,数据
$header,标头名称
*/
function makeExcel($data, $header)
{
    
    
    require_once "libs/xlsxwriter/xlsxwriter.class.php";
    //实例化
    $writer = new XLSXWriter();
    //文件属性
    $writer->setTitle('My Excel Document');
    $writer->setSubject('Document Subject');
    $writer->setAuthor('Author Name');
    $writer->setDescription('Document Description');
    $writer->setKeywords('keywords, go, here');

    $sheet_name = 'Sheet1';
    $writer->writeSheetHeader($sheet_name, $header);

    foreach ($data as $row) {
    
    
        $writer->writeSheetRow($sheet_name, $row);
    }

    $filename = md5(time()) . '.xlsx';
    $writer->writeToFile('upload/' . $filename);
}

//表头
$header = array('序号' => 'int', '姓名' => 'string', '性别' => 'string', '单位' => 'string', '职务' => 'string', '学历' => 'string');
//二维数组
$len = 10000;
$data = array();
for ($j = 0; $j < $len; $j++) {
    
    
    $data[$j] = array($j + 1, '姓名' . $j, '性别' . $j, '单位' . $j, '职务' . $j, '学历' . $j);
}
//生成表格
makeExcel($data, $header);

3. Descarga del navegador

Puede descargar el archivo de Excel generado por PHP_XLSXWriter directamente a través del navegador a través del siguiente código:

// 导入 PHP_XLSXWriter 库
require 'path/to/PHP_XLSXWriter.php';

// 创建 XLSXWriter 实例
$writer = new XLSXWriter();

// 添加数据到 Excel 文档
$data = array(
   array('姓名', '年龄', '城市'),
   array('张三', 28, '北京'),
   array('李四', 22, '上海'),
   array('王五', 31, '广州')
);

$writer->writeSheet($data);

// 定义下载的文件名
$filename = 'example.xlsx';

// 告诉浏览器输出的内容类型为 Excel
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

// 告诉浏览器文件的大小和名称
header('Content-Disposition: attachment;filename="'. $filename .'"');

// 将 Excel 文件输出到浏览器
$writer->writeToStdOut();
exit();

En el ejemplo anterior, primero creamos una XLSXWriterinstancia y agregamos algunos datos. Luego, usamos la header()función para decirle al navegador que el tipo de contenido de salida es Excel y especificar el nombre del archivo descargado. Finalmente, enviamos el archivo de Excel al navegador y evitamos que el script se ejecute con exit()la función .

De esta forma, cuando el usuario haga clic en el enlace de descarga, el navegador iniciará una operación de descarga y guardará el archivo de Excel generado en el disco local.

4. Función de encapsulación

Deje que la función admita la ejecución en segundo plano y la descarga del navegador al mismo tiempo.

/*封装函数
* $data,array,数据;
* $header,array,标头名称;
* $export,输出方式0后台运行1浏览器下载;
*/
function makeExcel($data, $header, $export = 0)
{
    
    
    require_once "libs/xlsxwriter/xlsxwriter.class.php";
    //实例化
    $writer = new XLSXWriter();
    //文件属性
    $writer->setTitle('My Excel Document');
    $writer->setSubject('Document Subject');
    $writer->setAuthor('Author Name');
    $writer->setDescription('Document Description');
    $writer->setKeywords('keywords, go, here');
    $sheet_name = 'Sheet1';
    $writer->writeSheetHeader($sheet_name, $header);
    
    //文件名称
    $filename = md5(time()) . '.xlsx';
    //设置下载方式
    if ($export == 0) {
    
    
        foreach ($data as $row) {
    
    
            $writer->writeSheetRow($sheet_name, $row);
        }
        $writer->writeToFile('upload/' . $filename);
    } else {
    
    
        $writer->writeSheet($data);
        // 告诉浏览器输出的内容类型为 Excel
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        // 告诉浏览器文件的大小和名称
        header('Content-Disposition: attachment;filename="' . $filename . '"');
        // 将 Excel 文件输出到浏览器
        $writer->writeToStdOut();
        exit();
    }
}

@tiempo de fuga a veces

Supongo que te gusta

Origin blog.csdn.net/weixin_41290949/article/details/131004724
Recomendado
Clasificación