php 使用 PhpSpreadsheet 导入导出操作

關鍵字 :PhpSpreadsheet

1. 导入数据

在实际的工作经验中,需要从 Excel 表格读取数据,插入到数据库保存。所以在这里介绍下 PhpSpreadsheet 这个强大的插件功能。
    # 引入 spreadsheet 类
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

# 读取Excel表格数据
# 有Xls和Xlsx格式两种
if( $fileExtendName =='xlsx' )
{
# 实例化阅读器对象
$objReader = IOFactory::createReader('Xlsx');
}else{
# 实例化阅读器对象
$objReader = IOFactory::createReader('Xls');
}

$objReader->setReadDataOnly(TRUE);
$filename = $filePath . $info->getSaveName();
# $filename可以是上传的表格,或者是指定的表格
$objPHPExcel = $objReader->load($filename);
# excel中的第一张sheet
$sheet = $objPHPExcel->getSheet(0);
# 取得总行数
$highestRow = $sheet->getHighestRow();
# 取得总列数
$highestColumn = $sheet->getHighestColumn();

# 循环读取excel表格,整合成数组。如果是不指定key的二维,就用$data[i][j]表示。
for ($j = 2; $j <= $highestRow; $j++) {
$tmp = $j - 2;
# 读取单元格的值
$software_begtime= $objPHPExcel->getActiveSheet()->getCell("AR" . $j)->getValue();
# 单元格实践格式转换
$toTimestamp = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($software_begtime);
}


2 .导出数据

在实际的工作经验中,要导出带样式的 Excel 表格,所以在这里介绍下 PhpSpreadsheet 这个强大的插件功能。

2.1 设置表格字体样式

# 引入 spreadsheet 类
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

# 实例化 Spreadsheet 对象
$spreadsheet = new Spreadsheet();
# 获取活动工作薄
$sheet_doing = $spreadsheet->getActiveSheet();
# 设置工作表标题名称
$sheet_doing->setTitle('正在做的方案');
# 样式设置
$sheet_doing_style = $sheet_doing->getStyle($letter.$row);
# 设置字体
$objFontA1= $sheet_doing_style->getFont();

$objFontA1->setName($font_family);
$objFontA1->setSize(11);
$objFontA1->setBold(true);
$objFontA1->getColor()->setARGB('FF000000');
# 设置对齐方式
$objAlignA1 = $sheet_doing_style->getAlignment();
$objAlignA1->setHorizontal(Alignment::HORIZONTAL_CENTER);
$objAlignA1->setVertical(Alignment::VERTICAL_CENTER);
# 设置边框
$objBorderA1 = $sheet_doing_style->getBorders();
$objBorderA1->getTop()->setBorderStyle(Border::BORDER_THIN);
$objBorderA1->getTop()->getColor()->setARGB('FF000000'); // color
$objBorderA1->getBottom()->setBorderStyle(Border::BORDER_THIN);
$objBorderA1->getLeft()->setBorderStyle(Border::BORDER_THIN);
$objBorderA1->getRight()->setBorderStyle(Border::BORDER_THIN);
# 设置填充颜色
$objFillA1 = $sheet_doing_style->getFill();
$objFillA1->setFillType(Fill::FILL_SOLID);
$objFillA1->getStartColor()->setARGB('FFCCCCFF');
# 设置换行
$sheet_doing_style->getAlignment()->setWrapText(true);
# 设置值
$sheet_doing->setCellValue($letter.$row, $arr_doing_title[$i-1]);

2.2 设置导出多个工作薄

# 引入 spreadsheet 类
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

# 实例化 Spreadsheet 对象
$spreadsheet = new Spreadsheet();
# 创建新的活动工作薄
$sheet_finished = $spreadsheet->createSheet(2)->setTitle('sheet2');

2.3 设置导出方式

$fileName = '文件名称';
$fileType = 'Xlsx';

# 1.下载到服务器
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save($fileName.'.'.$fileType);

# 2.输出到浏览器
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); //按照指定格式生成Excel文件
$this->excelBrowserExport($fileName, 'Xlsx');
$writer->save('php://output');

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論