在Web开发中,我们经常需要将数据导出为Excel文件,以便用户可以直接查看和下载,PHP作为一种广泛使用的服务器端脚本语言,提供了丰富的库和函数来实现这一功能,本文将介绍如何使用PHP导出数据到Excel文件的方法。
1、安装PHPExcel库
我们需要安装一个名为PHPExcel的库,它可以帮助我们轻松地创建和操作Excel文件,可以通过以下命令安装:
composer require phpoffice/phpexcel
2、创建一个新的PHP文件,export_to_excel.php,并在其中编写以下代码:
<?php require_once 'vendor/autoload.php'; use PHPExcel; use PHPExcel_IOFactory; // 创建一个新的PHPExcel对象 $objPHPExcel = new PHPExcel(); // 设置文档属性 $objPHPExcel->getProperties()->setCreator("Your Name") ->setLastModifiedBy("Your Name") ->setTitle("Example Document") ->setSubject("Example Document") ->setDescription("Example Document") ->setKeywords("example document") ->setCategory("example"); // 添加表头信息 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID') ->setCellValue('B1', 'Name') ->setCellValue('C1', 'Email'); // 添加数据行 $data = array( array('1', 'John Doe', 'john@example.com'), array('2', 'Jane Doe', 'jane@example.com'), ); $rowCount = 2; foreach ($data as $row) { $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A' . $rowCount, $row[0]) ->setCellValue('B' . $rowCount, $row[1]) ->setCellValue('C' . $rowCount, $row[2]); $rowCount++; } // 设置工作表标题居中并加粗显示 $objPHPExcel->getActiveSheet()->getStyle('A1:C1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A1:C1')->getFont()->setBold(true); // 设置自动列宽并调整表格大小以适应内容 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); $objPHPExcel->getActiveSheet()->fromArray($data, null, 'A2'); $objPHPExcel->getActiveSheet()->removeRow(1); // 删除表头行,因为我们已经在代码中设置了表头信息 $objPHPExcel->getActiveSheet()->calculateColumnWidths(); // 重新计算列宽以适应内容 $objPHPExcel->getActiveSheet()->freezePane('A4'); // 冻结窗格,以便在滚动时保持表头可见 $objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); // 设置页面方向为横向,以便更好地显示长表格内容 $objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); // 设置纸张大小为A4,以便更好地打印和查看表格内容 $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToPage(true); // 调整表格大小以适应页面大小,避免内容被截断或换行显示 $objPHPExcel->getActiveSheet()->getPageSetup()->setBlackAndWhite(true); // 将表格设置为黑白模式,以便更好地打印和查看表格内容(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setCenterHeader(true); // 在每个打印页上重复表头(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setRepeatingRowsAndColumns(array('repeat_cells' => array('A1:C1'))); // 在每个打印页上重复表头(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintGridlines(false); // 隐藏网格线(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintHeadings(true); // 打印表头(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintFooter(false); // 不打印页脚(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintTitleRows(false); // 不打印标题行(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintTitleColumns(false); // 不打印标题列(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setNoOrientation(false); // 不设置无方向模式(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setNoSummaryRows(false); // 不隐藏汇总行(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtStart(1); // 在每个打印页上重复第一行(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtEnd(1); // 在每个打印页上重复最后一行(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setColsToRepeatAtStart(1); // 在每个打印页上重复第一列(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setColsToRepeatAtEnd(1); // 在每个打印页上重复最后一列(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintArea('A1:C' . $rowCount - 1); // 设置打印区域(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setHorizontalCentered(true); // 水平居中对齐单元格内容(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setVerticalCentered(true); // 垂直居中对齐单元格内容(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setTopMargin(0.75); // 设置上边距(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setBottomMargin(0.75); // 设置下边距(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setLeftMargin(0.75); // 设置左边距(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setRightMargin(0.75); // 设置右边距(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setHeaderMargin(0.3); // 设置头部边距(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setFooterMargin(0.3); // 设置尾部边距(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintHeader($header); // 设置要打印的页眉(可选) $objPHPExcel->getActiveSheet()->getPageSetup()->setPrintFooter($footer); // 设置要打印的页脚(可选) $objPHPExcel->getDefaultStyle() -> getAlignment() -> setWrapText(true); // 设置自动换行(可选) $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // 根据需要选择不同的输出格式,如:'Excel5'、'HTML'、'CSV'等(可选) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // 根据需要设置不同的输出类型,如:'application/vnd.ms-excel'、'application/octet-stream'等(可选)
还没有评论,来说两句吧...