首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在codeigniter中通过PHPSpreadsheet上传2个excel文件

在CodeIgniter框架中使用PHPSpreadsheet库上传和处理两个Excel文件是一个常见的任务。以下是详细步骤和相关概念:

基础概念

PHPSpreadsheet: 这是一个用于读取、写入和操作电子表格文件的PHP库。它支持多种格式,如XLSX、XLS、CSV等。

CodeIgniter: 这是一个轻量级的PHP框架,提供了MVC架构,便于快速开发Web应用程序。

优势

  1. 灵活性: PHPSpreadsheet提供了丰富的API来处理各种复杂的电子表格操作。
  2. 兼容性: 支持多种Excel文件格式,确保了广泛的兼容性。
  3. 易用性: 结合CodeIgniter的简洁性,使得整个开发过程更加高效。

类型

  • XLSX: 现代Excel文件格式,基于XML。
  • XLS: 旧的Excel文件格式。
  • CSV: 纯文本格式,用于数据交换。

应用场景

  • 数据导入: 从Excel文件中读取数据并导入数据库。
  • 报表生成: 根据数据库中的数据生成Excel报表。
  • 数据分析: 对Excel文件中的数据进行复杂计算和分析。

实现步骤

1. 安装PHPSpreadsheet

你可以通过Composer安装PHPSpreadsheet:

代码语言:txt
复制
composer require phpoffice/phpspreadsheet

2. 创建上传控制器

在CodeIgniter中创建一个控制器来处理文件上传和读取。

代码语言:txt
复制
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use PhpOffice\PhpSpreadsheet\IOFactory;

class Upload extends CI_Controller {

    public function index() {
        $this->load->view('upload_form');
    }

    public function do_upload() {
        $config['upload_path']          = './uploads/';
        $config['allowed_types']        = 'xlsx|xls|csv';
        $config['max_size']             = 10000;

        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload('file1') && ! $this->upload->do_upload('file2')) {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('upload_form', $error);
        } else {
            $file1 = $this->upload->data();
            $file2 = $this->upload->data();

            $this->process_files($file1['full_path'], $file2['full_path']);
        }
    }

    private function process_files($file1, $file2) {
        $spreadsheet1 = IOFactory::load($file1);
        $spreadsheet2 = IOFactory::load($file2);

        // Example: Read data from the first sheet of both files
        $worksheet1 = $spreadsheet1->getActiveSheet();
        $worksheet2 = $spreadsheet2->getActiveSheet();

        $data1 = $worksheet1->toArray();
        $data2 = $worksheet2->toArray();

        // Process the data as needed
        // For example, merge the data and save to a new file
        $mergedData = array_merge($data1, $data2);

        $writer = IOFactory::createWriter($spreadsheet1, 'Xlsx');
        $writer->save('./uploads/merged_file.xlsx');

        redirect('upload/success');
    }

    public function success() {
        $this->load->view('upload_success');
    }
}

3. 创建视图文件

创建一个简单的表单视图文件upload_form.php

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
    <title>Upload Excel Files</title>
</head>
<body>
    <?php echo form_open_multipart('upload/do_upload'); ?>
        <input type="file" name="file1" />
        <input type="file" name="file2" />
        <input type="submit" value="Upload" />
    </form>
</body>
</html>

以及一个成功上传后的视图文件upload_success.php

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
    <title>Success</title>
</head>
<body>
    <h1>Files uploaded successfully!</h1>
</body>
</html>

常见问题及解决方法

1. 文件上传失败

原因: 可能是由于文件大小限制、文件类型不匹配或上传路径不存在。

解决方法: 检查$config中的设置,确保上传路径存在且有写权限。

2. 文件读取错误

原因: 可能是由于文件损坏或格式不支持。

解决方法: 使用try-catch块捕获异常,并检查文件是否完整且格式正确。

代码语言:txt
复制
try {
    $spreadsheet = IOFactory::load($filePath);
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

3. 内存不足

原因: 处理大型Excel文件时可能会耗尽内存。

解决方法: 增加PHP的内存限制,或在读取文件时使用流式处理。

代码语言:txt
复制
ini_set('memory_limit', '512M');

通过以上步骤和解决方案,你应该能够在CodeIgniter中成功上传和处理两个Excel文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

phpspreadsheet的使用

[CodeIgniter4]phpspreadsheet的使用 使用一个开源库第一步肯定是要看官网文档咯,看完就要爬坑,爬坑就要写个博客压压惊 https://phpspreadsheet.readthedocs.io...文件 //header('Content-Type:application/vnd.ms-excel');//告诉浏览器将要输出Excel03版本文件 header('Content-Disposition...# 待读取的excel文件,全路径,如果不是cli模式,那就是网站根目录为"\",ci4默认位置为public文件夹里面 $filename = 'test.xlsx'; # 根据文件名自动创建 适用于不知道文件后缀时...# 读取excel中A1数据,即第一行第一列,返回“姓名” $sheet->getCell('A1')->getValue(); # B1 返回“性别” $sheet->getCell('B1')->...getValue(); # 获取当前总行数 $rows = $sheet->getHighestRow(); $users = []; # 一般excel中第一行为标题,所以实际数据从第二行开始

1.6K30
  • Hyperf结合PhpOfficePhpSpreadsheet实现Excel&CSV文件导出导入

    PhpOffice/PhpSpreadsheet 介绍PhpSpreadsheet是一个用纯PHP编写的库,它提供了一组类,允许您读取和写入各种电子表格文件格式,如Excel和LibreOffice Calc...文件导出导出实例类文件xls后缀excel文件导出的heard头:\xls='application/vnd.ms-excel'xlsx后缀excel文件导出的heard头:\xlsx='application...Excel - 掘金 (juejin.cn)调用PhpSpreadsheet读取函数方法函数说明:获取上传文件的临时路径 $file['tmp_file']指定第一个工作表为当前 $spreadsheet...getBadwordListImport(): ResponseInterface{ $file = $this->request->file('import_file')->toArray(); //获取上传文件的临时路径...isset($file['tmp_file'])) { throw new BusinessException(ErrorCode::BUSINESS_ERROR, "文件上传失败");

    3.9K10

    在Koa.js中实现文件上传的接口

    文件上传是一个基本的功能,每个系统几乎都会有,比如上传图片、上传Excel等。那么在Node Koa应用中如何实现一个支持文件上传的接口呢?...npm install koa koa-router 设置图片上传目录,把图片上传到指定的目录中,在 app 路径下新建 public 文件夹,目录结构如下: koa-upload/ --app ---...借助 koa-static 中间件可以帮助我们生成一个静态服务,它指定一个文件夹,文件夹下所有的文件都可以通过 http服务来访问。...在 public 中新建 upload.html 文件作为测试页面。... 这是传统的表单提交,我们实际工作中这样的代码可能已经不常见了,action 就是我们的提交到的接口,enctype="multipart/form-data" 就是指定上传文件格式

    4.8K10

    php导出excel表格_phpspreadsheet导出

    xlswriter xlswriter – PHP 高性能 Excel 扩展,功能类似phpspreadsheet。它能够处理非常大的文件,同时保持内存使用率非常低。...以下代码是如何在特定工作表的每个打印页面上重复第1至5行的示例 $spreadsheet->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 5); 在单元格中添加评论...,分19次覆盖对应的sheet) 先用 PhpExcel 建立reader,再load文件,这样打开已经存在的文档,然后再建立writer,将reader中的数据都复制过来,再用 PhpExcel 进行数据修改...,通过程序将所有文件加入压缩包 使用phpspreadsheet进行导出excel的时候遇到了内存溢出的问题,官方提供了memory saving的解决方案,官方文档中提供了APC、redis和memcache...切割excel大文件导入 // 示例 $inputFileType = 'Xls'; $inputFileName = '.

    24.3K41

    Codeigniter文件上传类型不匹配错误

    Codeigniter的文件上传类方便了我们使用PHP来处理文件上传的操作,使用起来非常简单,如下: $config['upload_path'] = '....,基本上不会遇到这个坑,如果处理到了 excel、zip、rar类型的文件,你可能就会遇到明明在 allowed_types 中允许的文件类型,最后收获了 “The filetype you are attempting...Codeigniter的文件上传类型判断在 is_allowed_filetype 这个函数中处理,造成这个错误的主要原因是因为判断逻辑中有一个 mime 类型判断的步骤。 什么是 Mime 呢?...因为如果只从文件后缀来判断文件类型,是非常危险的。不怀好意的用户可能会把一个可执行文件后缀改成图片类型,上传成功后,如果能够获得文件的地址,并且文件在可执行目录,就能够执行动态脚本,还是很危险的。...针对不同的后缀,Codeigniter会从 config/mimes.php 文件匹配POST过来的数据中的 file_type 属性,只有一样才会校验通过,否则就会发生文件类型不匹配的错误。

    2.3K10

    ThinkPHP5.1 框架下 PhpSpreadsheet 操作 Excel 表的导入导出

    ■☞ 前期准备 提示: 本人整理的文章,目前只是针对于 拓展名为 ".xls"和".xlsx" 的 excel 规范文件 ▶ PhpSpreadsheet 安装 建议使用 composer ,执行命令如下..." ■☞ 读取 excel 中的数据 一般读取到 excel 表中的数据,就可以做后续的操作(发送短信,备忘数据等);此处以我导入数据库(mySQL)为例讲解 ▷ 前端操作 一般是需要一个文件上传按钮的...) 接着,就是读取 excel 文件中的内容,并将其插入到数据库 mySQL 的表中 最后,考虑到上传的文件没必要留着,进行删除操作 【注意删除前要释放空间,即文中的代码 "unset($info)...”) 第二点:操作的文件数据不要太大 鄙人测试,一万条的 excel 表还是没出问题的 如果出现溢出内存的问题,第一可考虑 在 php.ini 中 增加 memory_limit 的限制 如果是百万数据的...,建议使用 fputcsv() 进行输出流的分割下载 参考代码如下(我没有整合到源代码中,可做后期扩展) /** * 下载大量的数据到 excel中,此处以 .csv 文件存储

    3.2K30

    EasyDSS平台如何通过接口在特定的视频分类里上传点播文件?

    搭配RTMP高清摄像头使用,可将设备的实时流推送到平台上,实现无人机视频推流直播,可应用在城市航拍、农业植保、森林防火、秸秆焚烧、电力巡检等场景中。...今天和大家分享一下如何通过接口在特定的视频分类里上传点播文件。...1)首先,先调用登录接口:2)然后,查询下所有的点播文件及其分类名称:3)选择一个分类进行上传点播文件(这里以test为例子):4)通过查询接口,可查询到文件已经上传成功了,并且能获取到视频的m3u8流地址...,如图:EasyDSS支持用户将上传的视频文件进行点播,平台将视频文件转码存储到服务器上,通过服务来对外进行分发,可提供稳定流畅、高可靠、高并发的视频能力服务,也能与其他第三方平台对接。

    90310

    PhpOfficePhpSpreadsheet读取和写入Excel

    使用composer安装: composer require phpoffice/phpspreadsheet 使用 在项目目录下新建/public目录,在public目录下创建示例文件test.php...,打开Excel文件,你会看到Excel中的单元格A1中有“Welcome to Helloweba.”内容。...提供丰富的API,提供单元格样式设置、Excel表格属性设置、图表设置等等诸多功能。使用PhpSpreadsheet完全可以生成一个外观结构都满足你的Excel表格文件。...使用PhpSpreadsheet将Excel导入到MySQL数据库 导入Excel 思路:使用PhpSpreadsheet读取Excel表格中的有用信息,然后组装成sql语句,最后批量插入到MySQL表中...使用PhpSpreadsheet将数据导出为Excel文件 一、设置表头 首先我们引入自动加载PhpSpreadsheet库,然后实例化,设置工作表标题名称为:学生成绩表,接着设置表头内容。

    6.4K32

    ffsend:在命令行中通过 FireFox Send 分享文件

    其他人可以通过这个工具或者网页浏览器来下载这些分享的文件。 所有的文件都是在客户端加密的,并且秘钥将不会被共享到远程主机。另外,你还可以为上传的文件额外设置一个密码。...ffsend 的特点: 全功能且使用友好的命令行工具 可以安全地上传和下载文件与目录 总是在客户端加密 可用额外的密码进行保护、密码生成和可配置下载次数限制 内置的文件或目录的打包和解压 可以轻松地管理你的历史分享记录...能够使用你自己的 Send 主机 审查或者删除共享文件 精准的错误报告 低内存消耗,用于加密或上传下载 无需交互,可以集成在脚本中 如何在 LInux 中安装 ffsend 呢?...语法: $ ffsend upload [/Path/to/the/file/name] 在下面的例子中,我们将上传一个名为 passwd-up1.sh 的文件,一旦你上传了该文件,你将得到一个唯一的...Upload complete Share link: https://send.firefox.com/download/0742d24515/#P7gcNiwZJ87vF8cumU71zA 当你在远端系统中尝试下载该文件时

    1.2K20

    Thinkphp使用PhpSpreadsheet导入&导出Excel(适用各种Excel操作场景)

    phpspreadsheet 引入 由于PHPExcel早就停止更新维护,所以适用phpspreadsheet。不知道如何通过composer拉取项目包的同学,可以查看Composer学习一文。...\PhpSpreadsheet\Style\Fill; use PhpOffice\PhpSpreadsheet\Style\Color; use PhpOffice\PhpSpreadsheet\Style...; Excel导入操作(importExcel) 除了单纯的处理Excel数据外,还可以将Excel中的合并项、公式项、单元格格式提取,提取后可根据业务需求做对应处理后存储起来,以便后续的各种操作。...$objRead->canRead($file)) { throw new \Exception('只支持导入Excel文件!')...isset($options['savePath'])) { /* 直接导出Excel,无需保存到本地,输出07Excel文件 */ header('Content-Type

    3.5K10
    领券