php 导出excel压缩包

这篇博客介绍了如何使用PHP创建多个Excel文件,并将它们打包成ZIP压缩包。首先,通过PHPExcel库创建和填充Excel工作表,然后将所有工作表保存为单独的Excel文件。最后,使用ZipArchive类将这些文件打包成一个ZIP文件供用户下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//创建文件夹或清除文件夹下文件
$dir="var/templet";
if (!file_exists($dir))
{
    mkdir ($dir);//创建文件夹
}else
{
    $dh=opendir($dir);
    while ($file=readdir($dh))
    {
        if($file!="." && $file!="..")
        {
            $fullpath=$dir."/".$file;
            unlink($fullpath);
        }
    }
    closedir($dh);
}

//导出excel
//导出单个品类码excel
            $oe = new PHPExcel();
            $i = 0;
            $x = 1;
            $oe->setActiveSheetIndex(0);
            $oe->getActiveSheet()->setTitle('品类码'.$category_code);
            $oe->getActiveSheet()->setCellValue('A1', '品类码:'.$category_code);
            $oe->getActiveSheet()->setCellValue('A2',$manage_full_name);
//            $oe->getActiveSheet()->setCellValue('B1', $manage_code);
            $oe->getActiveSheet()->getColumnDimension('A')->setWidth(50);
//            $oe->getActiveSheet()->getColumnDimension('B')->setWidth(50);
            foreach ($excel_data as $kk=>$data){
                $oe->addSheet(new PHPExcel_Worksheet($oe, $kk));
                $i += 1;
            }
            foreach ($excel_data as $kk=>$data){
                $oe->setActiveSheetIndex($x);
                $column = "A";
                $column++;
                $column++;
                foreach ($data as $j=>$template_field) {
                    $column++;
                    $oe->getActiveSheet()->setCellValue('A1', 'ERPSKU');
                    $oe->getActiveSheet()->setCellValue('B1', 'Account');
                    $oe->getActiveSheet()->setCellValue('C1', 'SellerSku');
                    $oe->getActiveSheet()->getColumnDimension($column)->setWidth(20);
                    if($template_field['field_type'] == 4){
                        $oe->getActiveSheet()->getStyle($column)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
                    }
                    $oe->getActiveSheet()->setCellValue($column . '1', $template_field['template_name']);
                    $oe->getActiveSheet()->getColumnDimension($column)->setWidth(20);
                    $oe->getActiveSheet()->getComment( $column . '1')->setAuthor('PHPExcel' );     //设置作者
                    $oe->getActiveSheet()->getComment($column .'1' )->getText()->
                    createTextRun($template_field['template_description']);
                    $oe->getActiveSheet()->getComment( $column . '1' )->setWidth('150pt' )->setHeight('150pt');
                }
             $currentRow = 1;
                foreach($rowData as $rowSet=>$row){
                    $column2="A";
                    $currentColumn = 0 ;
                    foreach ($row as $order=>$item){

//                        $oe->getActiveSheet()->setCellValue(chr($colbaseIndex+$currentColumn) . ($currentRow+1), $item);
                        $oe->getActiveSheet()->setCellValue($column2 . ($currentRow+1), $item);
                        $column2++;
                        $currentColumn++;

                    }
                    $currentRow++;
                }

                $x += 1;

            }
//            var_dump($erpskus[$category_code]);
//            exit();

            $objWriter = PHPExcel_IOFactory::createWriter($oe, "Excel2007");
            $file ='var/templet/'.$line_name.'_'.$category_code.'.xlsx';
            $objWriter->save($file);
            $oe->disconnectWorksheets();
            unset($oe);

//打包
//zip打包
$dir='var/templet';
$datalist = array();
if (is_dir($dir)){
    $file_dir = scandir($dir);
    foreach($file_dir as $file){
        if ($file == '.' || $file == '..'){
            continue;
        }else{
            array_push($datalist, $dir."/".$file);
        }
    }
}

//$datalist 就是指 导出的excel的数量,数量为1的时,则以Excel格式导出
if (count($datalist) == 1 ){
    header("Location: /$datalist[0]");
    exit;
}


//$filename = "var/templet/templet.zip"; //最终生成的文件名(含路径)
$filename = "var/templet/".$line_name."_templet.zip"; //最终生成的文件名(含路径)
//生成文件
$zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
    exit('无法打开文件,或者文件创建失败');
}
foreach( $datalist as $val){
    if(file_exists($val)){
        $zip->addFile( $val, basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下
    }
}
$zip->close();//关闭
if(!file_exists($filename)){
    exit("无法找到文件"); //即使创建,仍有可能失败。。。。
}
header("Location: /$filename");
exit;
// end zip打包






1.获取PHPExcel 2.添加如下方法: function Excel_Export($filename,$data,$sheet){ error_reporting(E_ALL); ini_set('display_errors','On'); /** Include path **/ set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/'); /** PHPExcel */ include 'api/excel/PHPExcel.php'; /** PHPExcel_Writer_Excel2007 */ include 'api/excel/PHPExcel/Writer/Excel2007.php'; // Create new PHPExcel object //echo date('H:i:s') . "Create new PHPExcel object\n"; $objPHPExcel = new PHPExcel(); // Set properties //echo date('H:i:s') . "Set properties\n"; $objPHPExcel->getProperties()->setCreator("E421083458"); $objPHPExcel->getProperties()->setLastModifiedBy("E421083458"); $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); $objPHPExcel->getProperties()->setKeywords("office 2007 openxml php"); $objPHPExcel->getProperties()->setCategory("Test result file"); // Add some data //echo date('H:i:s') . "Add some data\n"; $objPHPExcel->setActiveSheetIndex(0); $charlist = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); //print_r($data); foreach($data as $key=>$value){ $j=0; if($key==0){ foreach($value as $k=>$v){ if($j<25){ $objPHPExcel->getActiveSheet()->setCellValue($charlist[$j].($key+1), mb_convert_encoding($k, "UTF-8", "GBK")); $j++; } } $j=0; } foreach($value as $k=>$v){ if($j<25){ //echo $charlist[$j].($key+1)."<br/>"; //echo $v."<br/>"; $objPHPExcel->getActiveSheet()->setCellValue($charlist[$j].($key+2), mb_convert_encoding($v, "UTF-8", "GBK")); $j++; } } } // Rename sheet //echo date('H:i:s') . "Rename sheet\n"; $objPHPExcel->getActiveSheet()->setTitle(mb_convert_encoding($sheet,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值