php 导出 excel

栏目: PHP · 发布时间: 7年前

内容简介:php 导出 excel

关于 PHP 导出 excel csv 常用的有 PHPexcel ,本文整理了一些其他方案。

高性能 Excel 扩展

sudo apt-get install -y zlib1g-dev
git clone https://github.com/jmcnamara/libxlsxwriter.git
cd libxlsxwriter
make && sudo make install
// https://github.com/viest/php-excel-writer
// https://laravel-china.org/topics/6888/php-high-performance-excel-extension-five-hundred-year-formula-no-memory-leak#reply37308
for($index = 0 ; $index < 10000 ; $index++){
    $data[$index] = ['viest', 23, 666666666666666666, '银河市地球区程序村PHP组菜鸟湾66号', 15666666666];
}

$timeStart = microtime(true);

$config = [
    'path' => '/vagrant/',
];

$excel = new \Vtiful\Kernel\Excel($config);

$textFile = $excel->fileName("test.xlsx")
    ->header(['name', 'age', 'id_card', 'address', 'phone'])
    ->data($data)
    ->outPut();

$timeEnd = microtime(true);
$time = $timeEnd - $timeStart;

echo "导出Excel花费: $time seconds\n";

laravel-excel

composer require maatwebsite/excel
// 导出 Excel 并能直接在浏览器下载https://laravel-china.org/topics/1918/extension-how-to-deal-with-the-excel-file-in-the-laravel-project 
# $export_file_name = 要生成的文件名
Excel::create($export_file_name, function ($excel) {
    $excel->sheet('Sheetname', function ($sheet) {
        $sheet->appendRow(['data 1', 'data 2']);
        $sheet->appendRow(['data 3', 'data 4']);
        $sheet->appendRow(['data 5', 'data 6']);
    });
})->download('xls');

// 导出 Excel 并存储到指定目录
Excel::create($export_file_name, function ($excel) {
    $excel->sheet('Sheetname', function ($sheet) {
        $sheet->appendRow(['data 1', 'data 2']);
        $sheet->appendRow(['data 3', 'data 4']);
        $sheet->appendRow(['data 5', 'data 6']);
    });
})->store('xls', $object_path); 

问题:
1. var_dump($reader->toArray());//第一行内容为key,如果为中文,需要修改excel.php的 'to_ascii' => false, 
2.大数字变成科学计数  11111111111 显示成 1.11111E+29
导出 excel 错误
PHPExcel_Calculation_Exception: Q5!A65  Formula Error: An unexpected error occured in /application/www/web_git-pull/vendor/phpoffice/phpexcel/Classes/PHPExcel/Cell.php:291

excel中一个单元格如果是以“=”开头,则说明这个单元格是根据其他单元格的值算出来的,“=”后面必须跟着一个合法的表达式,而那个字符串是用户的输入,很明显不应该是一个合法的表达式,所以应该在代码中过滤掉或者 $str = \t”.$str;

单文件

//https://github.com/mk-j/PHP_XLSXWriter/tree/master/examples 有很多测试代码
include_once("xlsxwriter.class.php");
ini_set('display_errors', 0);
ini_set('log_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);

$filename = "example.xlsx";
// 
for($index = 0 ; $index < 250000 ; $index++){
    $data[$index] = ['viest', 23, 666666666666666666, '银河市地球区程序村PHP组菜鸟湾66号', 15666666666];
}

$timeStart = microtime(true);

$writer = new XLSXWriter();
$writer->writeSheet($data);
$writer->writeToFile('example.xlsx');

$timeEnd = microtime(true);
$time = $timeEnd - $timeStart;

echo "导出Excel花费: $time seconds\n";
echo '#'.floor((memory_get_peak_usage())/1024/1024)."MB"."\n";

Excel处理包

//https://github.com/bean-du/excel
  $writer = new ExcelWriter();
    for ($i = 0; $i < 100; $i++){
        for ($j = 0; $j < 10; $j++){
            $data[$i][$j] = 'test ['.$i.']+['.$j.']';
        }
    }
    $writer->setWidth(range('A','J'))
        ->setValue($data)
        ->setFormat('xls')
        ->setAlignment(array('A1','C1'),'CENTER')
        ->setBackgroundColor(array('A1','C1'),'#ccccc')
        ->setAlignment(array('A2','C2'),'RIGHT')
        ->setActiveSheetName('Bean')
        ->outPut('test.xls');

down csv

function export_csv($filename)
{
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');

}

PDF、PPT、Excel、Word、视频等格式文件在线预览 http://jquery.malsup.com/media/ https://view.officeapps.live.... {yourFileOnlinePath}

提供超大文件上传的 Laravel 扩展包 https://github.com/peinhu/Aet...

PHP高效导出Excel https://segmentfault.com/a/11...

打造最全面的PHPExcel开发解决方案 https://segmentfault.com/a/11...


以上所述就是小编给大家介绍的《php 导出 excel》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人本界面

人本界面

(美)拉斯基(Jef Raskin) / 史元春 / 机械工业出版社 / 2004-1-1 / 28.0

如果我们想克服目前人机界面上的固有缺陷,就很有必要理解本书的教义;若无此愿望,读读也无妨。交互设计的许多重要方面此书并没有包括在内,因为许多文献中都已经有详尽的阐述。本书的意图是补充现有的界面设计的方法或预测未来。  本书概述了人机界面设计领域的研究成果,详细论证了界面设计思想应以认知学为基础,并考虑人类的心智特点,在指出当前界面设计中弊端的同时,提出了新产品开发的思路。本书集计算机科学、人体工程......一起来看看 《人本界面》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具