1.windows
点击链接后,选择对应的版本即可:
Releases · viest/php-ext-xlswriter · GitHub
注:32位系统用x64,64位系统用x86,以及对应的php版本,需要注意的是ts和nts之分。
2.Linux
实际应用场景中,xlswriter和php替换为对应版本即可,extension后面文件路径根据实际情况而定。
流程
cd /usr/local
wget https://pecl.php.net/get/xlswriter-1.5.2.tgz
tar xf xlswriter-1.5.2.tgz
cd xlswriter-1.5.2
/www/server/php/74/bin/phpize
./configure --with-php-config=/www/server/php/74/bin/php-config --enable-reader
make && make install
echo "extension =/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/xlswriter.so" >> /www/server/php/74/etc/php.ini
echo "extension =/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/xlswriter.so" >> /www/server/php/74/etc/php-cli.ini
最后重启php即可。
示例:
//导出
$ExcelTmpDir='upload';
$fileName = '表格名称';
$dirName = date('Ymd');//目录名
if(!opendir($ExcelTmpDir.'/'.$dirName)){
$ret=mkdir($ExcelTmpDir.'/'.$dirName);
if(!$ret)die('directory create faild!');
}
$config = [
'path' => $ExcelTmpDir.'/'.$dirName // xlsx文件保存路径
];
$fileObject = new \Vtiful\Kernel\Excel($config);
$fileObject = $fileObject->fileName($fileName);
$fileHandle = $fileObject->getHandle();
//加粗 背景蓝色
$formatTitle = new \Vtiful\Kernel\Format($fileHandle);
$TitleStyle = $formatTitle->background(0X8064A2)->Bold()->fontColor(0xffffff)->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTER)->toResource();
$title = array('序号', '年级', '院系', '专业', '班级', '学号', '姓名');
$textFile = $fileObject->header($title);
//设置列的宽度
$textFile->setRow('A1:A1', 18,$TitleStyle);
$textFile->setColumn('C:E', 20);
$textFile->setColumn('F1:F1', 18);
$textFile->setColumn('G1:G1', 14);
$textFile->setColumn('H1:H1', 22);
$textFile->setColumn('I1:I1', 14);
$textFile->setColumn('J1:J1', 100);
$textFile->freezePanes(1, 0);
$index = 0;
foreach ($dataArr as $row)
{
$textFile->insertText($index+1, 0, $index+1);
$textFile->insertText($index+1, 1, $row["grade"]); // #,##0 为单元格数据样式
$textFile->insertText($index+1, 2, $row["collegeName"]); // #,##0 为单元格数据样式
$textFile->insertText($index+1, 3, $row["major"]); // #,##0 为单元格数据样式
$textFile->insertText($index+1, 4, empty($row["className"])?'':(strpos($row["className"],'班')?$row["className"]:$row["className"].'班')); // #,##0 为单元格数据样式
$textFile->insertText($index+1, 5, $row["studentID"]); // #,##0 为单元格数据样式
$textFile->insertText($index+1, 6, $row["studentName"]); // #,##0 为单元格数据样式
$index++;
}
$textFile->output();
header("Location: /".$ExcelTmpDir.'/'.$dirName.'/'.$fileName);