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 ‘<pre>‘;
    var_dump($content);
    echo ‘</pre>‘;

?>

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.html

http://phpexcel.codeplex.com/

PHPExcel操作xls文件

时间: 2024-11-05 02:26:52

PHPExcel操作xls文件的相关文章

php中使用PHPExcel操作excel(xls)文件

读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址:http://phpexcel.codeplex.com/ 1.读取xls文件内容  代码如下 复制代码 <?php     //向xls文件写入内容     error_reporting(E_ALL);     ini_set('display_errors', TRUE);        include 'Classes/PHPExcel.php';                include

PHPExcel操作sae的storage上的文件

在用PHPexcel操作excel的时候,在本地是好使的,但是把代码部署到sae就不好使了.会遇到如下问题: 文件的操作被拒绝. 这个原因就是sae上的应用文件是不允许改动的.sae提供的文件方案是使用storage,所以可以把文件存储在storage来进行操作. 具体解决可以如下: 我在sae应用里新建一个domain域files(这个名字必须是小写字母或数字,如果是大写字母的话虽然可以在Cyberduck上新建成功,在domain管理里看到,但是是无效的domain).在这个files下新建

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

Java生成和操作Excel文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

java 操作excel 文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

poi excel文件上传并解析xls文件

1.jsp页面 <form action="hw/pe_xls_upload" method="post" enctype="multipart/form-data" > <table> <tr> <td>导入硬件序列号/密码Excel文件:</td> <td><input name="hwFile" type="file"/&g

PHPExcel导出Excel文件

error_reporting(0); require_once 'phpexcel/PHPExcel.php'; require_once 'phpexcel/PHPExcel/IOFactory.php'; $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setCreator("BillHong") ->setLastModifiedBy("BillHong")//创建

Java的JXL操作xls表格

jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件. 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式. 使用如下: 搭建环境 将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成

JXL操作Excel文件

jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件. 另外需要说明的是,这套API对图形和图表的支持很有限,而且 仅仅识别PNG格式. 1.创建一个test.xls文件,向其写入数据 package com.ccit; imp