一:   PHP将数据导出Excel表中(投机型)

二: PHPExcel: Github上可以下载此插件包,用法如下:

前端:

//上传阅卷员Excel文件
$("#upload_member").click(function (e) {
    e.preventDefault();
    var members_form = document.getElementById("members_form");
    var formData = new FormData(members_form);
    $.ajax({
        url: "/marking_manage/ajax_upload_members",
        method: "post",
        data: formData,
        dataType: "JSON",
        success: function (data) {
      //这里显示php脚本读取excel文件处理后返回的值
        },
//jquery使用FormData时必须设置下面两项,否则不会成功
        processData: false,  // 不处理数据
        contentType: false   // 不设置内容类型
    })
});

//下载导入阅卷员模板
$("#download_excel").click(function (e) {
    self.location.href = "/marking_manage/ajax_download_members"
});

后端:

public function ajax_upload_members()
    {
        require_once(APPPATH . 'libraries/PHPExcel.php');
        require_once(APPPATH . 'libraries/PHPExcel/IOFactory.php');

        date_default_timezone_set("PRC");
        $file = $_FILES;
        $fileName = $file['members']["tmp_name"];
        $inputFileType = PHPExcel_IOFactory::identify($fileName);
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objPHPExcel = $objReader->load($fileName);

        // 确定要读取的sheet
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow();

        //读取帐号
        $accounts = array();//保存文件中的所有帐号,实际就是A列中的所有以t开头的帐号
        for ($row = 1; $row <= $highestRow; $row++) {
            $rowData = $sheet->rangeToArray('A' . $row . ':' . "A" . $row);
            $account = strtolower($rowData[0][0]);
            if (preg_match("/^t\d+/", $account)) {
                $accounts[] = $account;
            }
        }

        $accounts = array_unique($accounts);
        //过滤帐号并返回
        $this->load->model("school_admin_model");
        $retval = array();//返回值
        foreach ($accounts as $account) {
            $teacher_info = $this->school_admin_model->get_admin_by_where(array("account"=>$account));
//            $retval[$teacher_info["school_id"]][] = array("account"=>$teacher_info["account"], "teacher_name"=>$teacher_info['teacher_name']);
            $retval[$teacher_info["school_id"]][] = $teacher_info["id"];
        }
        dexit($retval);
    }

    //下载阅卷员模板
    public function ajax_download_members()
    {
        require_once(APPPATH . 'libraries/PHPExcel.php');
        require_once(APPPATH . 'libraries/PHPExcel/IOFactory.php');

        date_default_timezone_set("PRC");

        $objPHPExcel = new PHPExcel();

        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '帐号')
            ->setCellValue('B1', '姓名')
            ->setCellValue('C1', '学校');

        // 设置第一个sheet为工作的sheet
        $objPHPExcel->setActiveSheetIndex(0);

        // 保存Excel 2007格式文件
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//如果第二个参数是"Excel5"则生成2003版本的excel文件
        browser_export('xxx','browser_excel07.xls');//输出到浏览器
        $objWriter->save('php://output');

    }

function browser_export($type, $filename)
{
    if ($type == "Excel5") {
        header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
    } else {
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件
    }
    header('Content-Disposition: attachment;filename="' . $filename . '"');//告诉浏览器将输出文件的名称
    header('Cache-Control: max-age=0');//禁止缓存
}

PHP与Excel 笔记的更多相关文章

  1. Excel 笔记目录

    前言 Excel 是微软(Microsoft)公司推出的 Office 办公系列软件的一个重要组成部分,主要用于电子表格处理,可以高效地完成各种表格和图表的设计,进行复杂的数据计算和分析. 一句科普 ...

  2. 【JAVA】使用Aphache poi操作EXCEL 笔记

    1 下载poi,地址 http://poi.apache.org/ 选择3.9版本. 2 刚开始尝试 把poi.jar放在D:\Program Files\java\jdk1.6.0_20\lib(不 ...

  3. .NET操作Excel笔记

    如果你新建一个项目的话,首先要添加Microsoft.Office.Core 与Microsoft.Office.Interop.Exce这两个应用,然后就能很方便的操作了,示例代码(只实现了简单的读 ...

  4. 【PYTHON】操作excel笔记

    import xlrd book = xlrd.open_workbook('..//data//case1.xls') # 获取excel对象 print(book.sheets()) # 获取ex ...

  5. excel笔记

    提取单元格中的数字部分 =MID(LOOKUP(1,-(1&MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1/17)),ROW($1:$15)))) ...

  6. 王佩丰第一讲 认识excel笔记

    改变工作表表浅颜色 批量插入工作表 选择多张工作表然后插入 找到表格边界区域快捷键(找到表格的最后一行):快速到达最上下左右端 点击边框上下左右双击 从指定的位置开始冻结窗格 输入今天的日期 快捷键c ...

  7. excel 笔记

    1.复制公式到整列(至文件尾): 当你想复制公式到整列(至文件尾)可选中有公式的单元格,待出现黑色填充柄时,双击即可

  8. Dynamic CRM 2013学习笔记(三十一)自定义用excel批量导入实体数据

    有一个实体的子表数据量太大,于是客户想用execel来导入实体数据.首先想到的是用系统自带的Import Data,客户嫌太麻烦,比如lookup字段要做map等. 下面是具体的实现步骤: 一.定义e ...

  9. VSTO学习笔记(十四)Excel数据透视表与PowerPivot

    原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...

随机推荐

  1. Java中的char占用几个字节

    目录 1.概述 2.答疑 3.总结 1.概述 网上或书上都说是Java中的char占用2个字节,一直没有深入,直到接触了编码,才对此产生了疑问,今天来深入一下这个问题. 2.答疑 char在设计之初的 ...

  2. selenium的browser.page_source无法返回页面内容

    selenium的browser.page_source无法返回页面内容 可能是编码的问题.. html= (browser.page_source).encode('GBK', 'ignore') ...

  3. JavaScript Array some() 方法

    some 判断数组中是否至少有一个元素满足条件 只要有一个满足就返回true 只有都不满足时才返回false 语法: array.some(function(value,index,array),th ...

  4. [Ting's笔记Day9]活用套件Carrierwave gem:(4)使用Imagemagick修改图片大小

    前情提要: 这几天我都在实验Carrierwave这套图片上传套件,也顺利部署到Heroku架站正式环境了.:) 接下来我遇到了新的问题:要如何在上传的时候,让Carrierwave gem大型siz ...

  5. xLearn

    https://blog.csdn.net/songbinxu/article/details/79662665

  6. JS高级总结

    网址:https://www.cnblogs.com/signheart/p/d6c229a5a758ee1dc21ad5ca2042ab8f.html 通常,通过 JavaScript,您需要操作 ...

  7. spring @Autowired与@Resource的区别

    1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必 ...

  8. 计算kdj

    import pandas as pd def KDJ_K(df,n=9):    df['highest'] = df['high'].rolling(n).max()    df['lowest' ...

  9. Python库 - Albumentations 图片数据增强库

    Python图像处理库 - Albumentations,可用于深度学习中网络训练时的图片数据增强. Albumentations 图像数据增强库特点: 基于高度优化的 OpenCV 库实现图像快速数 ...

  10. 小强学渲染之Unity Shader边缘描边加强

    项目开发遇到一个需求,就是当坦克的准心瞄准敌方(enemy tank 或 item box)时,要让选中的对象的轮廓高亮起来,这实际上是接下来要讲解的实时渲染中轮廓线的渲染应用.实现方式有多种,下面逐 ...