https://pecl.php.net/package/xlswriter
https://xlswriter-docs.viest.me/zh-cn/kuai-su-shang-shou/chuang-jian-wen-jian

wget https://pecl.php.net/get/xlswriter-1.3.2.tgz
tar xf xlswriter-1.3.2.tgz
cd xlswriter-1.3.2
/www/server/php/72/bin/phpize
./configure --with-php-config=/www/server/php/72/bin/php-config --enable-reader 
 make && make install

pecl install xlswriter
[xlswriter]
extension=/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/xlswriter.so

读取

$config   = ['path' => './'];
$excel    = new \Vtiful\Kernel\Excel($config);
$data = $excel->openFile('1.xlsx')
    ->openSheet()
    ->getSheetData();

多表
$sheetList = $excel->openFile('tutorial.xlsx')
    ->sheetList();
​
foreach ($sheetList as $sheetName) {
    echo 'Sheet Name:' . $sheetName . PHP_EOL;
​
    // 通过工作表名称获取工作表数据
    $sheetData = $excel
        ->openSheet($sheetName)
        ->getSheetData();
​
    var_dump($sheetData);
}
读取表头
$data = $excel->openFile('1.xlsx')
    ->openSheet();
$excel->nextRow();
跳过第一行
$data = $excel->openFile('tutorial.xlsx')
    ->openSheet('Sheet1')
    ->setSkipRows(1)//2表示跳过2行
    ->getSheetData();

->openSheet('Sheet1', \Vtiful\Kernel\Excel::SKIP_EMPTY_CELLS); //忽略空白格
->openSheet('Sheet1', \Vtiful\Kernel\Excel::SKIP_EMPTY_ROW);//忽略空白行

const SKIP_NONE = 0x00;         // 不忽略任何单元格、行
const SKIP_EMPTY_ROW = 0x01;    // 忽略空行
const SKIP_EMPTY_CELLS = 0x02;  // 忽略空单元格(肉眼观察单元格内无数据,并不代表单元格未定义、未使用)
const SKIP_EMPTY_VALUE = 0X100; // 忽略单元格空数据

->setType([
        \Vtiful\Kernel\Excel::TYPE_STRING,
        \Vtiful\Kernel\Excel::TYPE_INT,
        \Vtiful\Kernel\Excel::TYPE_TIMESTAMP,//时间类型
    ])
[
    2 => \Vtiful\Kernel\Excel::TYPE_TIMESTAMP,//从0开始
]
类型
const TYPE_STRING = 0x01;    // 字符串
const TYPE_INT = 0x02;       // 整型
const TYPE_DOUBLE = 0x04;    // 浮点型
const TYPE_TIMESTAMP = 0x08; // 时间戳,可以将 xlsx 文件中的格式化时间字符转为时间戳

$f = $excel->constMemory('1.xlsx',"导出表")
    ->header(['姓名', '年龄','时间',"公式","图片"]);
for ($index = 0; $index < 10; $index++) {
    $f->insertText($index+1, 0, '李白');
    $f->insertUrl($index+1, 1, 'https://www.baidu.com');
    $f->insertDate($index+1, 2, time(),"yyyy-mm-dd hh:mm:ss");
    $f->insertFormula($index+1, 3, "=SUM(1+1)");
    $f->insertImage($index+1,4, "1.png",0.1,0.1);//最后参数缩放默认1
}
$path = $f->output();
/*header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Disposition: attachment;filename="下载.xlsx"');
header('Content-Length: ' . filesize($path));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Cache-Control: max-age=0');
header('Pragma: public');
ob_clean();
flush();
if (copy($path, 'php://output') === false) {
}
@unlink($path);*/
/*$fp = fopen('1.csv', 'a');
$csvResult = $excel->openFile('1.xlsx')
    ->openSheet()->setType([
        2 => \Vtiful\Kernel\Excel::TYPE_TIMESTAMP,//从0开始
    ])
    ->putCSV($fp);*/

导出

$filePath = $excel->fileName('2.xlsx',"导出表")//固定内存换constMemory
    ->header(['Item', 'Cost'])
    ->data($data)
    ->output();
文档更新时间: 2021-11-29 04:09   作者:Yoby