解决vue使用xlsx不能读取未编辑的Excel表格数据

前言

最近写项目需要读取Excel表格数据,用到了xlsx,很好获取,一开始我也没注意(一直用的就是已经编辑过的表格)这个一下子就获取到了数据,然后就开始处理数据,最后部署完毕,我在其他电脑上试了一下,才发现不能读取未编辑的表格数据,当时给急死了,明天就要交项目,后来解决了这个问题,记录一下,解决方式如下:

一、给项目添加xlsx库

npm install xlsx --save

引入

import * as XLSX from "xlsx";

二、代码部分

 <input
        class="inpOne"
        type="file"
        @change="handleChange($event.target.files[0])"
        id="selectedFile"
 />

js部分

 handleChange(file) {
      const reader = new FileReader();
      reader.onload = () => {
        const workbook = XLSX.read(reader.result, { type: "binary" });
        const sheet = workbook.Sheets[workbook.SheetNames[0]];
        sheet["!ref"] = "A1:Z5000"; //此处就是一下读取表格中5000行数据,要是数据过大在此更改
        const data = XLSX.utils.sheet_to_json(sheet, { header: 1, defval: "" });
        // console.log(data, "表一elx表格数据"); //此处已经拿到处理过后的数据data,任由开发者使用
        // 例如把提取的数据以对象的形式导入到数组中,供table使用
        this.tableData = data.map(item => {
          return { name: item[0], shenfen: item[1], wages: item[2], };
        });
       // let newArray = this.tableData.filter(item => item.name != '' && item.wages != '' && item.shenfen != " ");  
         //此处是过滤表掉那些为空的数据,因为这种方式是一下子读取5000列数据,把所有数据都读取出来了,自然你的表格不到5000行拿到的数据也是5000行,所以要对数据做一下处理,才能拿到我们需要的数据
         // console.log(newArray, "newArray"); 
      };
      if (file instanceof File) {
        reader.readAsBinaryString(file);
      } else if (file instanceof Blob) {
        reader.readAsBinaryString(new File([file], file.name));
      }
    },

以上就是解决vue使用xlsx不能读取未编辑的Excel表格数据的方法

声明:在刚开始用的xlsx的时候借鉴的是前端教父的博客,所以也是也是在他的博客上做的修改,原文出处如下
前端教父原文博客点击进行跳转

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在前端使用 Vuexlsx 文件通过 POST 请求发送到后端。可以使用 axios 库来发送 POST 请求。示例代码如下: ```javascript let formData = new FormData(); formData.append('file', file); axios.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(response => { console.log(response.data); }).catch(error => { console.log(error); }); ``` 接下来,在后端使用 PHP 解析 xlsx 文件并将数据录入 Excel 表格。可以使用 PHPExcel 库来解析 xlsx 文件和操作 Excel 表格。示例代码如下: ```php require_once 'PHPExcel/IOFactory.php'; $inputFileName = $_FILES['file']['tmp_name']; $excelReader = PHPExcel_IOFactory::createReaderForFile($inputFileName); $excelObj = $excelReader->load($inputFileName); $worksheet = $excelObj->getActiveSheet(); // 获取表格数据并录入数据库 foreach ($worksheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); $data = []; foreach ($cellIterator as $cell) { $data[] = $cell->getValue(); } // TODO: 将数据录入数据库 } ``` 如果文件读取错误,可以在前端和后端都加入错误处理。在前端,可以通过 `catch` 捕获错误并提示用户。在后端,可以使用 `try...catch` 来捕获异常并返回错误信息。示例代码如下: 前端: ```javascript axios.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(response => { console.log(response.data); }).catch(error => { console.log(error); alert('文件上传失败!'); }); ``` 后端: ```php try { $inputFileName = $_FILES['file']['tmp_name']; $excelReader = PHPExcel_IOFactory::createReaderForFile($inputFileName); $excelObj = $excelReader->load($inputFileName); $worksheet = $excelObj->getActiveSheet(); // 获取表格数据并录入数据库 foreach ($worksheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); $data = []; foreach ($cellIterator as $cell) { $data[] = $cell->getValue(); } // TODO: 将数据录入数据库 } } catch (Exception $e) { echo '文件读取错误:' . $e->getMessage(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值