Java之导入Excel Vue框架前端篇

html内容:

<!--选择上传的Excel文件-->
<input type="file" id="excel"ref="head" accept=".xls,.xlsx" @change="checkType()" multiple/>
<!--点击上传Excel文件-->
<button type="button" @click = "uploadExcel">导入Excel</button>

js:

上传部分:

     //检查选中的文件是否是Excel文件
        checkType() {
          let vm = this;
          let allImgExt = '.xls|.xlsx|';
          let filePath = this.$refs.head.value;
          let extName = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
          if (allImgExt.indexOf(extName + '|') === -1) {
            alert("请选择正确的Excel文件");
            this.$refs.head.value = '';
            excelContent = [];
            return;
          }
          let file = this.$refs.head.files[0];
          vm.readExcel(file);//预览选中的Excel文件信息
          vm.excelContent = [];
        }



        //导入Excel文件
        uploadExcel() {
          let vm = this ;
          let formData = new FormData();
          let file = this.$refs.head.files[0];
          if(file == ""  || file == undefined){
            alert("请选择要导入的Excel文件");
            return;
          }
          formData.append('file', file);
          console.log("userCode = ", this.token.userInfo.userCode)
          //调用函数,把formData当做参数上传给后台的attchment微服务中的表格中
          this.ctApi.post({
            url: uploadExcel,
            data: formData,
            success: (data) => {
              
            }
          })
        }

预览部分:把Excel文件的信息保存到excelContent 数组中,每一个元素就是一行excel数据

        //预览要导入的excel
        readExcel(file) {// 解析Excel
          let _this = this;
          return new Promise(function(resolve, reject){// 返回Promise对象
            const reader = new FileReader();
            reader.onload = (e) => {// 异步执行
              try {
                // 以二进制流方式读取得到整份excel表格对象
                let data = e.target.result,workbook = XLSX.read(data, {type: 'binary'});
                let batteryArr = [];

                var sheetNames = workbook.SheetNames // 工作表名称集合
                _this.workbook = workbook
                _this.getTable(sheetNames[0])
              } catch (e) {
                reject(e.message);
              }
            };
            reader.readAsBinaryString(file);
          });
        }
        //根据excel的表明,获取单元格内容
        getTable (sheetName) {
          let vm =this;
          var worksheet = this.workbook.Sheets[sheetName]//获取整张excel表的内容
          vm.excelContent = XLSX.utils.sheet_to_json(worksheet)//把获取的信息转换成接送字符串
        }    

转载于:https://www.cnblogs.com/liunianchengshuang/p/10832972.html

前端Vue中,可以借助一些JavaScript库如`xlsx`处理Excel文件,例如`axios`发送POST请求将数据上传到后端。首先,在Vue组件里,你可以做以下操作: 1. 使用`vue-excel-importer`或`js-xlsx`等库读取用户选择的Excel文件。 2. 将读取到的数据转换成JSON或其他适合HTTP请求的形式。 ```html <template> <input type="file" @change="uploadFile" /> </template> <script> import XLSX from 'xlsx' export default { methods: { uploadFile(e) { const file = e.target.files[0] if (file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { // 使用XLSX加载Excel文件 const workbook = XLSX.read(file, { type: 'binary' }) const sheetNameList = workbook.SheetNames; let data = [] for (let sheet of sheetNameList) { const worksheet = workbook.Sheets[sheet]; data.push(XLSX.utils.sheet_to_json(worksheet)); } this.importData(data); } else { console.error('Unsupported file format'); } }, importData(fileData) { axios.post('/api/import', fileData) .then(response => { console.log('Data imported successfully', response.data); }) .catch(error => { console.error('Error importing data', error); }); }, } } </script> ``` 后端Java方面,可以使用Spring Boot框架下的`Apache POI`库来处理Excel和图片。接收来自前端的POST请求后,解析Excel内容并保存图片,然后对每行的图片信息进行处理。 ```java @PostMapping("/api/import") public ResponseEntity<?> importExcel(@RequestParam("file") MultipartFile excelFile) { try { List<Map<String, Object>> dataList = parseExcel(excelFile); // 对每行的图片数据进行处理,假设图片已存储在服务器 for (Map<String, Object> rowData : dataList) { String imageUrl = rowData.get("imageUrl").toString(); handleImage(imageUrl); // 自定义处理图片方法 } return ResponseEntity.ok().build(); } catch (Exception e) { return ResponseEntity.badRequest().body(e.getMessage()); } } private List<Map<String, Object>> parseExcel(MultipartFile excelFile) throws IOException { // 使用Apache POI读取Excel数据,并转成列表 // ... } private void handleImage(String imageUrl) { // 保存图片、更新数据库等操作 // ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值