资讯专栏INFORMATION COLUMN

php 导出 excel

付永刚 / 252人阅读

关于 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 VtifulKernelExcel($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
";
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 = “	”.$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
";
echo "#".floor((memory_get_peak_usage())/1024/1024)."MB"."
";
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...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26301.html

相关文章

  • 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出

    摘要:本文非原创,基于学院在中使用实现文件导入导出功能这篇文章在实际中测试调整。简介在中集成套件中的,从而方便我们以优雅的富有表现力的代码实现文件的导入和导出。 本文非原创,基于laravel 学院《在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能》 这篇文章在实际中测试调整。 showImg(https://segmentfault.c...

    XFLY 评论0 收藏0
  • php通用的excel导出方法

    摘要:一普遍导出方法在或是系统中导出是常有的事,做过的此功能人都知道,其主要操作其实是循环数据列表,然后一格一格地添加数据到固定的单元格中。 一.普遍导出方法 在crm或是oa系统中导出excel是常有的事,做过的此功能人都知道,其主要操作其实是循环数据列表,然后一格一格地添加数据到固定的单元格中。只要做好了一次,其后只要复制相关代码修改修改,其他地方导出功能也就完成了。 但是这样会有两个问...

    dendoink 评论0 收藏0
  • PHP高效导出Excel(CSV)

    摘要:,是逗号分隔值的英文缩写,通常都是纯文本文件。如果你导出的没有什么高级用法的话,只是做导出数据用那么建议使用本方法要比要高效的多。二十万数据导出大概需要到秒。 CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。如果你导出的Excel没有什么高级用法的话,只是做导出数据用那么建议使用本方法,要比PHPexcel要高效的多。二十万数据导出大概...

    DoINsiSt 评论0 收藏0
  • ThinkPHPPHPExcle导出Excel文件

    摘要:本篇文章主要讲述,如何在中使用中导出文件,是博主在实践了好多篇别人的帖子之后,总结归纳出来的文章,亲测可用。我的博客欢迎骚扰原文地址用导出文件。将文件,重命名成。文章结束,欢迎转载。 本篇文章主要讲述,如何在thinkPHP中使用PHPExcel中导出Excel文件,是博主在实践了好多篇别人的帖子之后,总结归纳出来的文章,亲测可用。thinkPHP版本是3.2。 我的博客:Mine-...

    rollback 评论0 收藏0
  • phpExcel实现Excel数据的导入导出(全步骤详细解析)

    摘要:上传添加需下载类文件,引入到项目类库里接收前台文件,接收前台文件重设置文件名设置移动路径表用函数方法返回数组创建一个读取数据,可用于入库引用类静态类设置为代表支持或以下版本,代表版开始读取上传到服务器中的文件,返回一个二维数组 1.上传添加excel (需下载PHPExcel类文件,引入到项目类库里) //接收前台文件, public function addExcel() ...

    zengdongbao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<