phpexcel导出导入

  1. 准备工作
    下载PHPExcel:http://phpexcel.codeplex.com/

这是个强大的Excel库,这里只演示导出Excel文件的功能,其中的大部分功能可能都用不着。

  1. 安装PHPExcel到Codeigniter
    1) 解压压缩包里的PHPExcel_1.8.0_odt / Classes文件夹中的内容到application/libraries目录下,目录结构如下:

    – application/libraries/PHPExcel.php

    – application/libraries/PHPExcel (文件夹)

2)修改application/libraries/PHPExcel/IOFactory.php 文件

– 将其类名从PHPExcel_IOFactory改为IOFactory,遵从CI类命名规则。

– 将其构造函数改为public

  1. 安装完毕,写一个导出excel的控制器(Controller)
<?php
class Table_export extends CI_Controller
{
    function __construct()
    {
        parent :: __construct(); 
        // Here you should add some sort of user validation
        // to prevent strangers from pulling your table data
    } 

    function index($table_name)
    {
        $query = $this -> db -> get($table_name);

        if (!$query)
            return false; 
        // Starting the PHPExcel library
        $this -> load -> library('PHPExcel');
        $this -> load -> library('PHPExcel/IOFactory');

        $objPHPExcel = new PHPExcel();
        $objPHPExcel -> getProperties() -> setTitle("export") -> setDescription("none");

        $objPHPExcel -> setActiveSheetIndex(0); 
        // Field names in the first row
        $fields = $query -> list_fields();
        $col = 0;
        foreach ($fields as $field)
        {
            $objPHPExcel -> getActiveSheet() -> setCellValueByColumnAndRow($col, 1, $field);
            $col++;
        } 
        // Fetching the table data
        $row = 2;
        foreach($query -> result() as $data)
        {
            $col = 0;
            foreach ($fields as $field)
            {
                $objPHPExcel -> getActiveSheet() -> setCellValueByColumnAndRow($col, $row, $data -> $field);
                $col++;
            } 

            $row++;
        } 

        $objPHPExcel -> setActiveSheetIndex(0);

        $objWriter = IOFactory :: createWriter($objPHPExcel, 'Excel5'); 
        // Sending headers to force the user to download the file
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="Products_' . date('dMy') . '.xls"');
        header('Cache-Control: max-age=0');

        $objWriter -> save('php://output');
    } 
}

phpexcel导入

CI框架 利用phpexcel类库 导入excel文件并入库

//从excel导入到数据表
——-上传文件

public function excel_put() { //先做一个文件上传,保存文件 $path=$_FILES['file']; $filePath = "uploads/".$path["name"]; move_uploaded_file($path["tmp_name"],$filePath); //$data=array('B'=>'name','C'=>'pwd','D'=>'money1','E'=>'salt'); $data=array('B'=>'name','C'=>'pid'); $tablename='city2';//表名字 $this->excel_fileput($filePath,$data,$tablename); }

———–处理文件,上传并入库

private function excel_fileput($filePath,$data,$tablename) { //ci框架中引入excel类 $this -> load -> library('PHPExcel'); $this -> load -> library('PHPExcel/IOFactory'); $PHPExcel = new PHPExcel(); $PHPReader = new PHPExcel_Reader_Excel2007(); if(!$PHPReader->canRead($filePath)){ $PHPReader = new PHPExcel_Reader_Excel5(); if(!$PHPReader->canRead($filePath)){ echo 'no Excel'; return ; } } // 加载excel文件 $PHPExcel = $PHPReader->load($filePath); // 读取excel文件中的第一个工作表 $currentSheet = $PHPExcel->getSheet(0); // 取得最大的列号 $allColumn = $currentSheet->getHighestColumn(); // 取得一共有多少行 $allRow = $currentSheet->getHighestRow(); // 从第二行开始输出,因为excel表中第一行为列名 for($currentRow = 2;$currentRow <= $allRow;$currentRow++) { /**从第A列开始输出*/ //echo $allColumn; for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++) { $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue(); //print_r($val); //die; if($currentColumn == 'A') { //echo $val."\t"; }else if($currentColumn <= $allColumn) { $data1[$currentColumn]=$val; } } foreach($data as $key=>$val) { $data2[$val]=$data1[$key]; } $this->db->insert($tablename,$data2); //print_r($data2); //echo "</br>"; } //echo "\n"; echo "导入成功"; } public function excel() { #查询需要导出的数据定义为标量: $arr $arr=array(); #导入类 $this->load->library('PHPExcel/PHPExcel'); #导入类 $this->load->library('PHPExcel/IOFactory'); #实例化导入类 $excel=new PHPExcel(); #设置当前本的值 $excel->setActiveSheetIndex(0);/*可有可无*/ #设置当前行 $row=1; #遍历数据 $excel->setActiveSheetIndex()->setCellValueByColumnAndRow(0,$row,'username'); $excel->setActiveSheetIndex()->setCellValueByColumnAndRow(1,$row,'password'); $row++; foreach($arr as $k=>$v) { $excel->setActiveSheetIndex()->setCellValueByColumnAndRow(0,$row,$v['username']); $excel->setActiveSheetIndex()->setCellValueByColumnAndRow(1,$row,$v['password']); $row++; } $excel = IOFactory :: createWriter($excel, 'Excel5'); // Sending headers to force the user to download the file header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="Products_' . date('dMy') . '.xls"'); header('Cache-Control: max-age=0'); $excel -> save('php://output'); }
使用Laravel框架实现PHPExcel导入导出功能非常简单。首先,我们需要安装PHPExcel库。可以通过Composer来安装,只需在终端中运行以下命令: ``` composer require phpoffice/phpexcel ``` 安装完成之后,在Laravel的控制器中,我们可以使用PHPExcel的相关类来实现导入导出功能。 要导出Excel文件,我们可以先创建一个PHPExcel对象,并设置一些基本的属性,例如文件名、作者等。然后,我们可以创建一个工作表,并设置一些表头信息。接下来,我们可以遍历需要导出的数据,将数据逐行写入工作表中。最后,我们可以使用PHPExcelWriter将工作表保存为Excel文件。下面是一个示例代码: ```php use PHPExcel; use PHPExcel_IOFactory; class ExportController extends Controller { public function exportData() { $objPHPExcel = new PHPExcel(); // 设置文件属性 $objPHPExcel->getProperties() ->setCreator("Your Name") ->setLastModifiedBy("Your Name") ->setTitle("Export Data") ->setSubject("Export Data") ->setDescription("Export Data"); $objPHPExcel->setActiveSheetIndex(0); $sheet = $objPHPExcel->getActiveSheet(); // 设置表头信息 $sheet->setCellValue('A1', 'Column 1') ->setCellValue('B1', 'Column 2') ->setCellValue('C1', 'Column 3'); // 导出数据 $data = [ ['Data 1', 'Data 2', 'Data 3'], ['Data 4', 'Data 5', 'Data 6'], ]; foreach ($data as $key => $value) { $row = $key + 2; $sheet->setCellValue('A' . $row, $value[0]) ->setCellValue('B' . $row, $value[1]) ->setCellValue('C' . $row, $value[2]); } // 导出Excel $objPHPExcel->getActiveSheet()->setTitle('Sheet 1'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('export.xlsx'); } } ``` 要导入Excel文件,我们可以先创建一个PHPExcel对象,并使用`load`方法加载Excel文件。然后,我们可以通过`getActiveSheet`方法获取工作表,并使用`getCell`方法获取单元格的值。接下来,我们可以遍历工作表的行和列,将数据存储到数组中。最后,我们可以对获取到的数据进行相关的处理。下面是一个示例代码: ```php use PHPExcel; use PHPExcel_IOFactory; class ImportController extends Controller { public function importData() { $objPHPExcel = PHPExcel_IOFactory::load('import.xlsx'); $sheet = $objPHPExcel->getActiveSheet(); $data = []; foreach ($sheet->getRowIterator() as $row) { $rowData = []; foreach ($row->getCellIterator() as $cell) { $rowData[] = $cell->getValue(); } $data[] = $rowData; } // 对导入的数据进行处理 // ... return $data; } } ``` 通过以上的代码,我们就可以轻松地在Laravel框架中实现PHPExcel导入导出功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值