使用phpEmail 类实现导入并解析

首先下载PHPEXCEL 下载地址:https://github.com/PHPOffice/PHPExcel

require $_SERVER['DOCUMENT_ROOT']."/addons/shop/core/web/sale/promotion/PHPExcel-1.8/Classes/PHPExcel.php";//引入PHPExcel加载文件  要绝对路径
        $file = $_FILES['uploadFile'];
        $filename = $file['name'];
        $file_temp_name =$file['tmp_name'];
        $type = strstr($filename,'.');
        if($type != '.xls' && $type != '.xlsx'){
            show_json(0,"规格错误");//错误提示
        }
        if(is_uploaded_file($file_temp_name)){
        //保存的路径  需要绝对路径
            $full_name = $_SERVER['DOCUMENT_ROOT']."/addons/shop/core/web/sale/promotion/excel/".$filename;
            $result = move_uploaded_file($file_temp_name, $full_name);
        }else{
            show_json(0,"上传方式错误,请重新上传!");//错误提示
        }
        //如果上传文件成功,就执行导入 excel操作
        $objReader = PHPExcel_IOFactory::createReaderForFile($full_name);
        $objPHPExcel = $objReader->load($full_name);
        $objPHPExcel->setActiveSheetIndex(0);
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow(); // 取得总行数
        $highestColumn_num = PHPExcel_Cell::columnIndexFromString($sheet->getHighestDataColumn());	//列数
        //$columns = PHPExcel_Cell::getColumn($highestColumn_num);
        $columns = array('A','B','C','D');
        $arr_result = array();
        $dealer_element = array();
        for ($j = 2; $j <= $highestRow; $j++) {
            for ($k = 0; $k < count($columns); $k++) {
                //读取单元格
                $value = $objPHPExcel->getActiveSheet()->getCell($columns[$k] . $j)->getValue();//这个就是获取每个单元格的值
                $value = trim($value);
                if (empty($value)) {
                    $value = NULL;
                }
                $dealer_element[$k] = $value;
                //这里可以根据要求,做一些数据的验证
            }
            $arr_result[$j] = $dealer_element;
        }
var_dump($arr_result);

注意事项:上传保存的地址和引入的地址都需要使用绝对路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: EasyExcel是一个Java语言开发的开源框架,可以帮助开发人员快速读写Excel文件。如果你想使用EasyExcel实现批量导入,你可以使用以下步骤: 1. 引入EasyExcel依赖:在项目的pom.xml文件中加入如下代码: ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.8</version> </dependency> ``` 2. 定义Excel数据模型:定义一个Java Bean,表示Excel中的一行数据,如: ``` @Data public class ImportData { @ExcelProperty(value = "姓名", index = 0) private String name; @ExcelProperty(value = "年龄", index = 1) private Integer age; @ExcelProperty(value = "邮箱", index = 2) private String email; } ``` 3. 实现批量导入:编写代码读取Excel文件,并将每行数据映射到ImportData对象中,如: ``` InputStream inputStream = new FileInputStream(file); EasyExcel.read(inputStream, ImportData.class, new DataListener()).sheet().doRead(); ``` 以上代码可以实现从Excel文件批量导入数据的功能。更详细的使用方法可以参考EasyExcel的官方文档。 ### 回答2: 使用easyExcel实现批量导入需要以下步骤: 1. 引入easyExcel库:通过在项目的依赖中添加easyExcel库的引用。 2. 创建实体:根据需要导入的Excel数据结构,创建对应的实体,每个字段要与Excel中的列一一对应。 3. 创建解析监听器:创建一个实现AnalysisEventListener接口,并重写相应的方法,用于处理解析后的每一行数据。可以在process方法中进行业务逻辑的处理,比如将数据存入数据库或者其他操作。 4. 创建导入任务:在需要进行批量导入的地方,创建导入任务。可以通过指定实体解析监听器,调用EasyExcel的read方法来进行导入。 5. 配置导入参数:可以通过使用ReadSheet对象的setHeadRowNumber方法指定Excel中的表头所在的行数。还可以通过使用ReadSheet对象的setClazz方法指定导入数据的实体。 6. 执行导入:调用EasyExcel的read方法,并传入导入任务、解析监听器和导入参数,开始执行导入操作。 7. 处理解析结果:在解析监听器中,可以重写doAfterAllAnalysed方法,在导入完成后进行一些后续操作,比如进行结果统计和提示。 以上是使用easyExcel实现批量导入的基本步骤。根据不同的业务需求,可能还需要进行一些额外的配置和处理。总的来说,easyExcel提供了简单易用的API,使得批量导入数据变得更加方便和高效。 ### 回答3: 使用easyExcel实现批量导入可以分为以下几个步骤: 1. 引入依赖:首先,在项目的pom.xml文件中引入easyExcel的依赖。例如: ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.3.4</version> </dependency> ``` 2. 创建Excel读取监听器:通过继承`AnalysisEventListener`,创建一个自定义的监听器,用于处理导入的Excel数据。可以重写其中的`invoke()`方法,在该方法中对每一行数据进行处理。例如: ```java public class ExcelListener extends AnalysisEventListener<User> { private List<User> userList = new ArrayList<>(); @Override public void invoke(User data, AnalysisContext context) { userList.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 导入完成后的操作 } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } } ``` 3. 执行导入操作:通过`EasyExcel.read()`方法,将导入的Excel文件解析成一个个对象。可以指定读取的起始位置、监听器等。例如: ```java String fileName = "导入文件.xlsx"; InputStream inputStream = new FileInputStream(fileName); ExcelListener listener = new ExcelListener(); EasyExcel.read(inputStream, User.class, listener).sheet().headRowNumber(2).doRead(); List<User> userList = listener.getUserList(); // 对导入的数据进行处理或保存到数据库等操作 ``` 4. 处理导入的数据:获取到导入的数据后,可以根据业务需求进行进一步的处理,比如验证数据的有效性、保存到数据库等。例如: ```java for (User user : userList) { // 验证数据的有效性 if (user.getName() != null && user.getAge() != null) { // 保存到数据库或其他操作 } else { // 忽略无效数据或进行错误提示 } } ``` 通过以上步骤,就可以使用easyExcel实现批量导入功能。这个库提供了很多灵活的配置选项,可以根据具体需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值