Home > Backend Development > PHP Tutorial > PHPExcel operates xls files, _PHP tutorial

PHPExcel operates xls files, _PHP tutorial

WBOY
Release: 2016-07-13 10:21:16
Original
1039 people have browsed it

PHPExcel operates xls files.

There will be problems reading Chinese xls and csv files. I searched for information online and found that the PHPExcel class library is easy to use. Official website address: http: //phpexcel.codeplex.com/

1. Read the contents of the xls file
<?<span>php
    
    </span><span>//</span><span>读取xls</span>
    
    <span>header</span>("Content-Type:text/html;charset=utf-8"<span>);
    </span><span>include</span> 'Classes/PHPExcel.php'<span>;            
    </span><span>include</span> 'Classes/PHPExcel/IOFactory.php'<span>;

    </span><span>function</span> readxls(<span>$file</span>, <span>$type</span><span>) {
        </span><span>$xlsReader</span> = PHPExcel_IOFactory::createReader(<span>$type</span><span>);  
        </span><span>$xlsReader</span>->setReadDataOnly(<span>true</span><span>);
        </span><span>$xlsReader</span>->setLoadSheetsOnly(<span>true</span><span>);
        </span><span>$sheets</span> = <span>$xlsReader</span>->load(<span>$file</span><span>);
        </span><span>$content</span> = <span>$sheets</span>->getSheet(0)->toArray(); <span>//</span><span>读取第一个工作表(注意编号从0开始) 如果读取多个可以做一个循环0,1,2,3....
        //得到二维数组,每个小数组是excel表格内容的一行 里面包含此行的每列的数据  </span>
        <span>return</span> <span>$content</span><span>;
    }
    
    </span><span>//</span><span>$type = 'Excel2007'; //设置要解析的Excel类型 Excel5(2003或以下版本)或Excel2007</span>
    <span>$type</span> = 'Excel5'<span>;
    </span><span>$content</span> = readxls('data.xls', <span>$type</span><span>);
    </span><span>echo</span> '<pre class="brush:php;toolbar:false">'<span>;
    </span><span>var_dump</span>(<span>$content</span><span>);
    </span><span>echo</span> '
'; ?>
Copy after login

2. Write content to xls file

<?<span>php

    </span><span>//</span><span>向xls文件写入内容</span>
    
    <span>error_reporting</span>(<span>E_ALL</span><span>);
    </span><span>ini_set</span>('display_errors', <span>TRUE</span><span>);
    
    </span><span>include</span> 'Classes/PHPExcel.php'<span>;            
    </span><span>include</span> 'Classes/PHPExcel/IOFactory.php'<span>;
    
    </span><span>//</span><span>$data:xls文件内容正文
    //$title:xls文件内容标题
    //$filename:导出的文件名
    //$data和$title必须为utf-8码,否则会写入FALSE值</span>
    <span>function</span> write_xls(<span>$data</span>=<span>array</span>(), <span>$title</span>=<span>array</span>(), <span>$filename</span>='report'<span>){
        </span><span>$objPHPExcel</span> = <span>new</span><span> PHPExcel();
        </span><span>//</span><span>设置文档属性,设置中文会产生乱码,待完善...
        // $objPHPExcel->getProperties()->setCreator("云舒")
                             // ->setLastModifiedBy("云舒")
                             // ->setTitle("产品URL导出")
                             // ->setSubject("产品URL导出")
                             // ->setDescription("产品URL导出")
                             // ->setKeywords("产品URL导出");</span>
        <span>$objPHPExcel</span>->setActiveSheetIndex(0<span>);
        
        </span><span>$cols</span> = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'<span>;
        </span><span>//</span><span>设置标题</span>
        <span>for</span>(<span>$i</span>=0,<span>$length</span>=<span>count</span>(<span>$title</span>); <span>$i</span><<span>$length</span>; <span>$i</span>++<span>) {
            </span><span>//</span><span>echo $cols{$i}.'1';</span>
            <span>$objPHPExcel</span>->getActiveSheet()->setCellValue(<span>$cols</span>{<span>$i</span>}.'1', <span>$title</span>[<span>$i</span><span>]);
        }
        </span><span>//</span><span>设置标题样式</span>
        <span>$titleCount</span> = <span>count</span>(<span>$title</span><span>);
        </span><span>$r</span> = <span>$cols</span>{0}.'1'<span>;
        </span><span>$c</span> = <span>$cols</span>{<span>$titleCount</span>}.'1'<span>;
        </span><span>$objPHPExcel</span>->getActiveSheet()->getStyle("<span>$r</span>:<span>$c</span>")-><span>applyFromArray(
            </span><span>array</span><span>(
                </span>'font'    => <span>array</span><span>(
                    </span>'bold'      => <span>true</span><span>
                )</span>,
                'alignment' => <span>array</span><span>(
                    </span>'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,<span>
                )</span>,
                'borders' => <span>array</span><span>(
                    </span>'top'     => <span>array</span><span>(
                        </span>'style' => PHPExcel_Style_Border::<span>BORDER_THIN
                    )
                )</span>,
                'fill' => <span>array</span><span>(
                    </span>'type'       => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
                    'rotation'   => 90,
                    'startcolor' => <span>array</span><span>(
                        </span>'argb' => 'FFA0A0A0'<span>
                    )</span>,
                    'endcolor'   => <span>array</span><span>(
                        </span>'argb' => 'FFFFFFFF'<span>
                    )
                )
            )
        );
        
        </span><span>for</span>(<span>$i</span>=0,<span>$length</span>=<span>count</span>(<span>$data</span>); <span>$i</span><<span>$length</span>; <span>$i</span>++<span>) {
            </span><span>$j</span> = 0<span>;
            </span><span>foreach</span>(<span>$data</span>[<span>$i</span>] <span>as</span> <span>$v</span>) {   <span>//</span><span>这里用foreach,支持关联数组和数字索引数组</span>
                <span>$objPHPExcel</span>->getActiveSheet()->setCellValue(<span>$cols</span>{<span>$j</span>}.(<span>$i</span>+2), <span>$v</span><span>);
                </span><span>$j</span>++<span>;
            }
        }
        </span><span>//</span><span> 生成2003excel格式的xls文件</span>
        <span>header</span>('Content-Type: application/vnd.ms-excel'<span>);
        </span><span>header</span>('Content-Disposition: attachment;filename="'.<span>$filename</span>.'.xls"'<span>);
        </span><span>header</span>('Cache-Control: max-age=0'<span>);

        </span><span>$objWriter</span> = PHPExcel_IOFactory::createWriter(<span>$objPHPExcel</span>, 'Excel5'<span>);
        </span><span>$objWriter</span>->save('php://output'<span>);
    }
    
    </span><span>$array</span> = <span>array</span><span>(
        </span><span>array</span>(1111,'名称','品牌','商品名','http://www.baidu.com'),
        <span>array</span>(1111,'名称','品牌','商品名','http://www.baidu.com'),
        <span>array</span>(1111,'名称','品牌','商品名','http://www.baidu.com'),
        <span>array</span>(1111,'名称','品牌','商品名','http://www.baidu.com'),
        <span>array</span>(1111,'名称','品牌','商品名','http://www.baidu.com'),<span>
    );
    write_xls(</span><span>$array</span>,<span>array</span>('商品id','供应商名称','品牌','商品名','URL'),'report'<span>);
    
</span>?>
    
Copy after login

3. Operate the database to obtain the content to be written Give an example of using mysqli preprocessing to obtain content:
<?<span>php

    </span><span>//</span><span>获取数据库数据(mysqli预处理学习)</span>
    <span>$config</span> = <span>array</span><span>(
        </span>'DB_TYPE'=>'mysql',
        'DB_HOST'=>'localhost',
        'DB_NAME'=>'test',
        'DB_USER'=>'root',
        'DB_PWD'=>'root',
        'DB_PORT'=>'3306',<span>
    );
    </span><span>function</span> getProductIdByName(<span>$name</span><span>) {
        </span><span>global</span> <span>$config</span><span>;
        </span><span>$id</span> = <span>false</span><span>;
        
        </span><span>$mysqli</span> = <span>new</span> mysqli(<span>$config</span>['DB_HOST'], <span>$config</span>['DB_USER'], <span>$config</span>['DB_PWD'], <span>$config</span>['DB_NAME'<span>]);
        </span><span>if</span>(<span>mysqli_connect_error</span>()) {   <span>//</span><span>兼容 < php5.2.9 OO way:$mysqli->connect_error</span>
            <span>die</span>("连接失败,错误码:".<span>mysqli_connect_errno</span>()."错误信息:".<span>mysqli_connect_error</span><span>());
        }
        </span><span>//</span><span>设置连接数据库的编码,不要忘了设置</span>
        <span>$mysqli</span>->set_charset("gbk"<span>);
        </span><span>//</span><span>中文字符的编码要与数据库一致,若没设置,结果为null</span>
        <span>$name</span> = <span>iconv</span>("utf-8", "gbk//IGNORE", <span>$name</span><span>);
        </span><span>if</span>(<span>$mysqli_stmt</span> = <span>$mysqli</span>->prepare("select id from 137_product where name like ?"<span>)) {
            </span><span>$mysqli_stmt</span>->bind_param("s", <span>$name</span><span>);
            </span><span>$mysqli_stmt</span>-><span>execute();
            </span><span>$mysqli_stmt</span>->bind_result(<span>$id</span><span>);
            </span><span>$mysqli_stmt</span>-><span>fetch();
            </span><span>$mysqli_stmt</span>-><span>close();
        }
        </span><span>$mysqli</span>-><span>close();
        
        </span><span>return</span> <span>$id</span><span>;
    }
    
    </span><span>$id</span> = getProductIdByName('%伊奈卫浴伊奈分体座便器%'<span>);
    </span><span>var_dump</span>(<span>$id</span><span>);
</span>?>
Copy after login

OK...

References: http://blog.sina.com.cn/s/blog_44b3f96d0101cczo.html http://phpexcel.codeplex.com/

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/860057.htmlTechArticlePHPExcel operates xls files. There will be problems reading Chinese xls and csv files. I searched for information online and found that The PHPExcel class library is easy to use, official website address: http://phpexcel.codeplex.com/ 1. Read...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template