给CodeIgniter添加EXCEL导出数据的helper功能

<?php
/** Error reporting */
error_reporting(E_ALL);

/** PHPExcel */
include FCPATH.'vendor/Excel/excel/PHPExcel.php';
include FCPATH.'vendor/Excel/excel/PHPExcel/Writer/Excel5.php';


function download(  $column , $datalist) {
// Create new PHPExcel object

$objPHPExcel = new PHPExcel();

// Set properties

$objPHPExcel->getProperties()->setCreator("Michael");
$objPHPExcel->getProperties()->setLastModifiedBy("MOT");
$objPHPExcel->getProperties()->setTitle("36lean email list");
$objPHPExcel->getProperties()->setSubject("Emails");
$objPHPExcel->getProperties()->setDescription("Array to Excel");

// Add some data
$objPHPExcel->setActiveSheetIndex(0);
$basic = 'A';
foreach ($column as $c) {

    $objPHPExcel->getActiveSheet()->SetCellValue( $basic.'1', $c);
    
    $basic ++ ;
}

$max_length = count( $datalist) - 1;

for ($count = 0; $count <= $max_length; $count++) { 

    $basic = 65;
    $num_basic = 65;



    foreach ($datalist[$count] as $key => $d) {

        $basic = $num_basic;

        $basic = big_chr( $basic);

        $d = str_replace('=', '_', $d);

        $objPHPExcel->getActiveSheet()->SetCellValue( $basic.($count+2) , $d);

        $num_basic ++;

    }

    $basic = 65;
}


//$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');

// Rename sheet

$objPHPExcel->getActiveSheet()->setTitle('list');

        
// Save Excel 2007 file
$fhandle = opendir('data/download/');

while($file = readdir( $fhandle))
{
    if( is_file( 'data/download/'.$file))
    {
        unlink( 'data/download/'.$file);
    }
}

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$filename = 'data/download/'.md5(time()).'.xls';
$objWriter->save($filename);

return base_url( $filename);
//header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
//header('Cache-Control: max-age=0');

}


function big_chr( $number) {

    if( $number < 91)
        return chr( $number);

    $number = $number - 65;

    if( $number / 26 >= 1)
    {
       $size = intval( $number / 26 );

       $prefix = chr( 64 + $size );

       return $prefix . chr( 65 + $number % 26 );
    }
} 

存为/applications/helpers/export_excel_helper.php

加强了一下 可以读取更多列的excel了 26x26列

你可能感兴趣的:(给CodeIgniter添加EXCEL导出数据的helper功能)