PHPExcel操作xls檔案,_PHP教程

來源:互聯網
上載者:User

PHPExcel操作xls檔案,


讀取中文的xls、csv檔案會有問題,網上找了下資料,發現PHPExcel類庫好用,官網地址:http://phpexcel.codeplex.com/

1、讀取xls檔案內容
php        //讀取xls        header("Content-Type:text/html;charset=utf-8");    include 'Classes/PHPExcel.php';                include 'Classes/PHPExcel/IOFactory.php';    function readxls($file, $type) {        $xlsReader = PHPExcel_IOFactory::createReader($type);          $xlsReader->setReadDataOnly(true);        $xlsReader->setLoadSheetsOnly(true);        $sheets = $xlsReader->load($file);        $content = $sheets->getSheet(0)->toArray(); //讀取第一個工作表(注意編號從0開始) 如果讀取多個可以做一個迴圈0,1,2,3....        //得到二維數組,每個小數組是excel表格內容的一行 裡麵包含此行的每列的資料          return $content;    }        //$type = 'Excel2007'; //設定要解析的Excel類型 Excel5(2003或以下版本)或Excel2007    $type = 'Excel5';    $content = readxls('data.xls', $type);    echo '
';    var_dump($content);    echo '
'; ?>

2、向xls檔案寫內容

php    //向xls檔案寫入內容        error_reporting(E_ALL);    ini_set('display_errors', TRUE);        include 'Classes/PHPExcel.php';                include 'Classes/PHPExcel/IOFactory.php';        //$data:xls檔案內容本文    //$title:xls檔案內容標題    //$filename:匯出的檔案名稱    //$data和$title必須為utf-8碼,否則會寫入FALSE值    function write_xls($data=array(), $title=array(), $filename='report'){        $objPHPExcel = new PHPExcel();        //設定文件屬性,設定中文會產生亂碼,待完善...        // $objPHPExcel->getProperties()->setCreator("雲舒")                             // ->setLastModifiedBy("雲舒")                             // ->setTitle("產品URL匯出")                             // ->setSubject("產品URL匯出")                             // ->setDescription("產品URL匯出")                             // ->setKeywords("產品URL匯出");        $objPHPExcel->setActiveSheetIndex(0);                $cols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';        //設定標題        for($i=0,$length=count($title); $i<$length; $i++) {            //echo $cols{$i}.'1';            $objPHPExcel->getActiveSheet()->setCellValue($cols{$i}.'1', $title[$i]);        }        //設定標題樣式        $titleCount = count($title);        $r = $cols{0}.'1';        $c = $cols{$titleCount}.'1';        $objPHPExcel->getActiveSheet()->getStyle("$r:$c")->applyFromArray(            array(                'font'    => array(                    'bold'      => true                ),                'alignment' => array(                    'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,                ),                'borders' => array(                    'top'     => array(                        'style' => PHPExcel_Style_Border::BORDER_THIN                    )                ),                'fill' => array(                    'type'       => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,                    'rotation'   => 90,                    'startcolor' => array(                        'argb' => 'FFA0A0A0'                    ),                    'endcolor'   => array(                        'argb' => 'FFFFFFFF'                    )                )            )        );                for($i=0,$length=count($data); $i<$length; $i++) {            $j = 0;            foreach($data[$i] as $v) {   //這裡用foreach,支援關聯陣列和數字索引數組                $objPHPExcel->getActiveSheet()->setCellValue($cols{$j}.($i+2), $v);                $j++;            }        }        // 產生2003excel格式的xls檔案        header('Content-Type: application/vnd.ms-excel');        header('Content-Disposition: attachment;filename="'.$filename.'.xls"');        header('Cache-Control: max-age=0');        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');        $objWriter->save('php://output');    }        $array = array(        array(1111,'名稱','品牌','商品名','http://www.baidu.com'),        array(1111,'名稱','品牌','商品名','http://www.baidu.com'),        array(1111,'名稱','品牌','商品名','http://www.baidu.com'),        array(1111,'名稱','品牌','商品名','http://www.baidu.com'),        array(1111,'名稱','品牌','商品名','http://www.baidu.com'),    );    write_xls($array,array('商品id','供應商名稱','品牌','商品名','URL'),'report');    ?>    

3、操作資料庫擷取要寫入的內容舉個使用mysqli的預先處理擷取內容的例子:
php    //擷取資料庫資料(mysqli預先處理學習)    $config = array(        'DB_TYPE'=>'mysql',        'DB_HOST'=>'localhost',        'DB_NAME'=>'test',        'DB_USER'=>'root',        'DB_PWD'=>'root',        'DB_PORT'=>'3306',    );    function getProductIdByName($name) {        global $config;        $id = false;                $mysqli = new mysqli($config['DB_HOST'], $config['DB_USER'], $config['DB_PWD'], $config['DB_NAME']);        if(mysqli_connect_error()) {   //相容 < php5.2.9 OO way:$mysqli->connect_error            die("串連失敗,錯誤碼:".mysqli_connect_errno()."錯誤資訊:".mysqli_connect_error());        }        //設定串連資料庫的編碼,不要忘了設定        $mysqli->set_charset("gbk");        //中文字元的編碼要與資料庫一致,若沒設定,結果為null        $name = iconv("utf-8", "gbk//IGNORE", $name);        if($mysqli_stmt = $mysqli->prepare("select id from 137_product where name like ?")) {            $mysqli_stmt->bind_param("s", $name);            $mysqli_stmt->execute();            $mysqli_stmt->bind_result($id);            $mysqli_stmt->fetch();            $mysqli_stmt->close();        }        $mysqli->close();                return $id;    }        $id = getProductIdByName('%伊奈衛浴伊奈分體座便器%');    var_dump($id);?>

OK...

參考資料:http://blog.sina.com.cn/s/blog_44b3f96d0101cczo.htmlhttp://phpexcel.codeplex.com/



http://www.bkjia.com/PHPjc/860057.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/860057.htmlTechArticlePHPExcel操作xls檔案, 讀取中文的xls、csv檔案會有問題,網上找了下資料,發現PHPExcel類庫好用,官網地址:http://phpexcel.codeplex.com/ 1、讀取...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.