vue3导入execl表格和导入图片功能

效果图

template部分

按钮

 <el-row :gutter="10" class="mb12">
      <el-col :span="1.5">
        <ComBtn
          @click="multipleImport"
          :btnName="'批量导入'"
        ></ComBtn>
      </el-col>
      <el-col :span="1.5">
        <exportBtn @click="multipleExport"></exportBtn>
      </el-col>
      <el-col :span="1.5">
        <ComBtn
          @click="imageExport"
          :btnName="'导入图片'"
        ></ComBtn>
      </el-col></el-row>

对话框

<el-dialog
      v-model="importOpen"
      width="500px"
      append-to-body
      title="导入信息"
      :before-close="closeImp"
    >
      <div class="el-upload__tip">
        {{tips=='只能上传xlsx/xls类型的文件'?'':tips}}
        <div class="el-upload__tip1" v-if="tips == '只能上传xlsx/xls类型的文件'">
          <p>
            1、只能上传
            <i class="xls">xlsx/xls</i> 类型的文件'
          </p>
          2{{ excelTip }}
          <a
            href="../../../../public/学生信息模板.xlsx"
            download="学生信息模板.xlsx"
            class="red"
          >下载Excel模板</a>
        </div>
      </div>
      <table>
        <thead>
          <td class="head" style="width: 200px;">文件名</td>
          <td class="head" style="width: 200px;">大小/kb</td>
          <td class="head" style="width: 80px;">状态</td>
        </thead>
        <tbody>
          <tr>
            <td>{{filename}}</td>
            <td>{{filesize}}</td>
            <td>{{filestatus}}</td>
          </tr>
        </tbody>
      </table>
      <el-upload
        drag
        :before-upload="beforeUpload"
        ref="uploadrefss"
        :http-request="uploadHandler"
        :show-file-list="false"
        class="uploa"
      >
        <div class="el-upload__text">
          将文件拖拽到此区域或者
          <em>点击上传</em>
        </div>
      </el-upload>
    </el-dialog>

js部分

// TODO导入xlsx
const text = ref("");
const tips = ref("");
const excelTip = ref("");
const xORi = ref();
const importOpen = ref(false);
const uploadrefss = ref();
const multipleImport = () => {
  xORi.value = "excel";
  importOpen.value = true;
  tips.value = "只能上传xlsx/xls类型的文件";
  excelTip.value = "上传文件前,请先";
  if (uploadrefss.value) {
    uploadrefss.value.clearFiles();
  }
};
const filename = ref("");
const filesize = ref("");
const filestatus = ref("");
// 文件上传之前的操作
function beforeUpload(params) {
  filename.value = params.name;
  filesize.value = (params.size / 1024).toFixed(2);
  filestatus.value = "上传中";
  /* 在上传之前校验的文件格式 */
  if (xORi.value == "excel") {
    if (!(params.name.endsWith(".xlsx") || params.name.endsWith(".xls"))) {
      ElMessage({
        type: "warning",
        message: "请选择正确的格式文件上传",
      });
      return false;
    }
  } else {
    if (!(params.name.endsWith(".rar") || params.name.endsWith(".zip"))) {
      ElMessage({
        type: "warning",
        message: "请选择正确的格式文件上传",
      });
      return false;
    }
  }
}

function uploadHandler(val) {
  let fd = new FormData();
  if (xORi.value == "excel") {
    fd.append("excelFile", val.file);
    importStuInfoList(fd).then((res) => {
    });
  } else {
    fd.append("zipFile", val.file);
    imageStuInfoList(fd).then((res) => {
    });
  }
  filestatus.value = "上传成功";
  requestAPI();
}
function closeImp() {
  importOpen.value = false;
  filename.value = "";
  filesize.value = "";
  filestatus.value = "";
}
// TODO导入图片
function imageExport() {
  xORi.value = "image";
  importOpen.value = true;
  tips.value = "上传的图片以学生的学号或身份证命名(例如:学号.jpg),并进行压缩";
  uploadrefss.value.clearFiles();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3 导入excel表格的实现过程如下: 首先,需要安装xlsx插件,可以使用以下命令进行安装: ``` npm i xlsx ``` 然后,在vue-element-admin提供的导入功能的基础上,新建一个组件,位置为`src/components/UploadExcel`。可以参考以下代码: ```javascript // src/components/UploadExcel/index.vue <template> <el-upload class="upload-demo" multiple method="post" action="api/excel/updown" style="margin-left: 10px" accept=".xlsx,.xls" :show-file-list="false" :on-success="success" name="files" > <el-button type="primary">导入</el-button> </el-upload> </template> <script> export default { methods: { success(response) { // 处理导入成功的逻辑 }, }, }; </script> ``` 接下来,需要在全局注册导入excel组件。可以在`main.js`文件中添加以下代码: ```javascript // main.js import UploadExcel from './components/UploadExcel' Vue.use(UploadExcel) ``` 这样,就可以在Vue3项目中使用导入excel功能了。 参考资料: - \[vue-element-admin\](https://github.com/PanJiaChen/vue-element-admin) - \[element-plus\](https://element-plus.org/#/zh-CN/component/upload) - \[xlsx\](https://www.npmjs.com/package/xlsx) \[1\] \[2\] #### 引用[.reference_title] - *1* [封装一个可以导入Excel数据的组件且解决导入Excel数据产生的bug](https://blog.csdn.net/gxdzi/article/details/114002949)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [基于SpringBoot+EasyExcel+vue3实现excel表格导入和导出](https://blog.csdn.net/weixin_51146329/article/details/123521425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值