读取中文的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 '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';
        //设置www.111cn.net标题
        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'
                    )
                )
            )
        );
       
        $i = 0;
        foreach($data as $d) {  //这里用foreach,支持关联数组和数字索引数组
            $j = 0;
            foreach($d as $v) {   //这里用foreach,支持关联数组和数字索引数组
                $objPHPExcel->getActiveSheet()->setCellValue($cols{$j}.($i+2), $v);
                $j++;
            }
       $i++;
        }
        // 生成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');
   
?>

2、向xls文件写内容

 代码如下 复制代码
<?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;   //得到的是gbk码(同数据库编码)
    }  
    $id = getProductIdByName('%伊奈卫浴伊奈分体座便器%');
    var_dump($id);
?>

OK...

相关内容

php中使用PHPExcel操作excel(xls)文件的更多相关文章

  1. php中使用PHPExcel读写excel(xls)文件的方法

    首先从GitHub上下载 excel的相关类库 下载地址:https://github.com/PHPOffice/PHPExcel 以下是从excel中获取数据 <?php /** * * @ ...

  2. C#开发中使用Npoi操作excel实例代码

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  3. 使用PHPExcel操作Excel用法实例分析

    本文实例分析了使用PHPExcel操作Excel用法.分享给大家供大家参考.具体分析如下: PHPExcel下载地址:http://www.codeplex.com/PHPExcel http://w ...

  4. NPOI 操作数据库中数据的导入导出(Excel.xls文件) 和null数据的处理。

    App.config: <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  5. C# 操作 Excel(.xls和.xlsx)文件

    C#创建Excel(.xls和.xlsx)文件的三种方法 .NET 使用NPOI导入导出标准Excel C# 使用NPOI 实现Excel的简单导入导出 NET使用NPOI组件将数据导出Excel-通 ...

  6. java导入导出下载Excel,xls文件(带下拉框)

    /** * 导入excel文件 * 2014-7-23 * @return */ @RequiresPermissions("plug:product:caiwu:upload") ...

  7. java poi导入EXCEL xls文件代码

    /** * */ package com.bn.car.common.report.excel; import java.io.FileInputStream; import java.io.IOEx ...

  8. C++中利用libxl操作Excel表格

    libxl是一款操作excel的商业库,支持C.C++.C#和Delphi.下文利用libxl在C++中实现了从excel文档的表1中随机挑选记录,保存到新建的表中.以下为代码: #include & ...

  9. java与Excel (.xls文件) ---使用JXL创建,增添表格文件

    由于一些原因要搞一下excel文件,个人感觉poi太难,所以用了JXL(感觉比较简单). 1.添加外部归档 jxl.jar 2. /** 生成的xls文件第一次需要手动选择EXCEL打开* * */ ...

随机推荐

  1. BZOJ 1045: [HAOI2008] 糖果传递 数学

    1045: [HAOI2008] 糖果传递 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1045 Description 有n个小朋友坐 ...

  2. Codeforces Gym 100531I Instruction 构造

    Problem I. Instruction 题目连接: http://codeforces.com/gym/100531/attachments Description Ingrid is a he ...

  3. iOS开发——多线程OC篇&多线程总结

    多线程总结 //1.NSThread /** 优点:NSThread 比其他两个轻量级. 缺点:需要自己管理线程的生命周期,线程同步,线程同步时对数据的加锁会有一定的系统开销. cocoa给我提供了两 ...

  4. Lvalue, Rvalue, Xvalue, Prvalue, Glvalue

    c++11中关于什么是lvalue, 什么是rvalue, 什么是xvalue, 什么是prvalue, 什么是… 一直搞得我晕头转向的, 今天下定决心一定要把它搞定, 写了一个程序来判断lvalue ...

  5. Prepared statements(mysqli & pdo)

    参考: http://php.net/manual/en/mysqli.quickstart.prepared-statements.php http://www.ultramegatech.com/ ...

  6. [Buzz.Today]2013.07.26

    # OpenFab 3D printing hardware is rapidly scaling up to output continuous mixtures of multiple mater ...

  7. Laravel 5.0 之命令及处理程序

    本文译自 Matt Stauffer 的 系列文章 . 本文中涉及的新功能都是关于 Commands 的,这些特性在 Laravel 旧版本中已经有了,但是在 Laravel 5.0 中变得更加好用了 ...

  8. rm反向删除的几种方法

    关键词:rm  删除 反向 参考: http://blog.sina.com.cn/s/blog_67e34ceb01014930.html http://bbs.csdn.net/topics/39 ...

  9. eclipse中的tomcat debug模式启动报超时45s

    在eclipse中加入tomcat,开debug模式非常好用,这里就不介绍了 最近eclipse的tomcat开debug模式就是启动不了,增加时间也不能解决,但是非debug模式就可以打开,我觉得是 ...

  10. Linux Shell远程执行命令(命令行与脚本方式)

    需求:经常需要在一台服务器远程到其他节点的服务器上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了.介绍两种shell命令远程执行的方法. 方式一: s ...