【Vue项目实践】实现在线预览word文件、excel文件(1)

readExcelFromRemoteFile: function (url) {

  var vm = this;

  var xhr = new XMLHttpRequest();

  xhr.open("get", url, true);

  xhr.responseType = "arraybuffer";

  xhr.onload = function () {

    if (xhr.status == 200) {

      mammoth

        .convertToHtml({ arrayBuffer: new Uint8Array(xhr.response) })

        .then(function (resultObject) {

          vm.$nextTick(() => {

            // document.querySelector("#wordView").innerHTML =

            //   resultObject.value;

            vm.vHtml = resultObject.value;

          });

        });

    }

  };

  xhr.send();

},

}




二、查看Excel

=========



1.引用sheetjs

===========



(1)安装 npm install --save xlsx



npm install --save xlsx




(2)引入 import XLSX from "xlsx";



import XLSX from “xlsx”;




2.页面布局

------



<el-table :data="excelData" style="width: 100%">

  <el-table-column

     v-for="(value, key, index) in excelData[2]"

     :key="index"

      :prop="key"

      :label="key"

  ></el-table-column>

 </el-table>



3. 请求URL显示数据

------------



data() {

return {

excelData: [],

workbook: {},

excelURL: "", //文件地址,看你对应怎末获取、赋值

};

},

created() {

// 具体函数调用位置根据情况而定

this.readWorkbookFromRemoteFile(this.wordURL);

}

methods:{

// 在线查看excel文件

readWorkbookFromRemoteFile: function (url) {

  var xhr = new XMLHttpRequest();

  xhr.open("get", url, true);

  xhr.responseType = "arraybuffer";

  let _this = this;

  xhr.onload = function (e) {

    if (xhr.status === 200) {

      var data = new Uint8Array(xhr.response);

      var workbook = XLSX.read(data, { type: "array" });

      console.log("workbook", workbook);



      var sheetNames = workbook.SheetNames; // 工作表名称集合

      _this.workbook = workbook;

      _this.getTable(sheetNames[0]);

    }

  };

  xhr.send();

},

getTable(sheetName) {

  console.log(sheetName);

  var worksheet = this.workbook.Sheets[sheetName];

  this.excelData = XLSX.utils.sheet_to_json(worksheet);

  console.log(this.excelData);

},

}




三、项目应用:根据详情后缀分情况显示word、excel

============================



1\. 效果展示

========



![](https://img-blog.csdnimg.cn/76734443fb9c42f4a8b5ab824109a036.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP55m9UmFjaGVs,size_20,color_FFFFFF,t_70,g_se,x_16)



场景说明: 点击查看按钮,吊起弹框展示数据



2\. 页面布局

--------



 <el-table :data="excelData" style="width: 100%">

    <el-table-column

        v-for="(value, key, index) in excelData[2]"

        :key="index"

        :prop="key"

        :label="key"

     ></el-table-column>

 </el-table>



 3.调用函数展示数据

-----------



根据row中文件后缀判断使用哪种形式



data() {

return {

// 显示word excel

vHtml: "",

wordURL: "",

isWord: "",

fileType: "", // 1 word(.docx .doc) 2 excel(.xlsx .xsl) 3 其他()

excelData: [],

workbook: {},

excelURL: "", //文件地址,看你对应怎末获取、赋值

};

},

methods:{

// 查看详情=列表操作

// <el-button type=“text” @click=“handleDetail(scope.row)” v-if=“!scope.row.havePassword”>查看

handleDetail(row) {

  console.log(row, "查看row");

  this.tzOpen = true;

  this.detailForm = row;

  if (row.suffix === "docx" || row.suffix === "doc") {

    // this.fileType = 1;

    this.isWord = 1;

    // this.wordURL = row.url;

    this.readExcelFromRemoteFile(row.url);

  } else if (row.suffix === "xlsx" || row.suffix === "xls") {

    // this.fileType = 2;

    this.isWord = 0;

    // this.excelURL = row.url;

    this.readWorkbookFromRemoteFile(row.url);

  }

},

// 在线查看excel文件

readWorkbookFromRemoteFile: function (url) {

  var xhr = new XMLHttpRequest();

  xhr.open("get", url, true);

  xhr.responseType = "arraybuffer";

  let _this = this;

  xhr.onload = function (e) {

    if (xhr.status === 200) {

      var data = new Uint8Array(xhr.response);

      var workbook = XLSX.read(data, { type: "array" });

      console.log("workbook", workbook);



      var sheetNames = workbook.SheetNames; // 工作表名称集合

      _this.workbook = workbook;

      _this.getTable(sheetNames[0]);

    }

  };

  xhr.send();

},

// 在线查看word文件

readExcelFromRemoteFile: function (url) {

  var vm = this;

  var xhr = new XMLHttpRequest();

  xhr.open("get", url, true);

  xhr.responseType = "arraybuffer";

  xhr.onload = function () {

    if (xhr.status == 200) {

      mammoth

        .convertToHtml({ arrayBuffer: new Uint8Array(xhr.response) })

        .then(function (resultObject) {

          vm.$nextTick(() => {

            // document.querySelector("#wordView").innerHTML =

            //   resultObject.value;

            vm.vHtml = resultObject.value;

          });

        });

    }

  };

  xhr.send();

},

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
升又不知道该从何学起的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-kI3cTto3-1715042802759)]

[外链图片转存中…(img-AL59iOHM-1715042802760)]

[外链图片转存中…(img-q59chJ5Z-1715042802760)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下步骤在Vue实现在线预览Excel文件: 1. 安装依赖:在终端中,进入您的Vue项目目录,并运行以下命令安装`xlsx`和`file-saver`依赖: ``` npm install xlsx file-saver ``` 2. 创建组件:创建一个名为`ExcelPreview`的Vue组件,并在模板中添加一个按钮和一个文件输入框: ```html <template> <div> <input type="file" @change="handleFileChange" /> <button @click="previewExcel">预览</button> </div> </template> ``` 3. 导入依赖:在组件的`<script>`标签中导入所需的依赖: ```javascript import XLSX from 'xlsx'; import FileSaver from 'file-saver'; ``` 4. 处理文件:在组件的`methods`中添加一个处理文件变化的方法,获取用户选择的Excel文件: ```javascript methods: { handleFileChange(event) { const file = event.target.files[0]; this.file = file; }, // 其他方法... } ``` 5. 预览Excel:在组件的`methods`中添加一个预览Excel文件的方法,使用`XLSX`库解析文件并生成预览: ```javascript methods: { // 其他方法... previewExcel() { const reader = new FileReader(); reader.onload = (e) => { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, { type: 'array' }); const firstSheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[firstSheetName]; const excelData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); // 在此处处理预览Excel数据,例如展示在页面上或使用其他组件进行渲染 console.log(excelData); }; reader.readAsArrayBuffer(this.file); } } ``` 6. 预览数据处理:在上述代码中的注释部分,您可以根据需要处理预览Excel数据。例如,您可以将其展示在页面上的表格中,或使用其他组件进行渲染。 这样,当用户选择一个Excel文件并点击预览按钮时,您就可以在控制台中看到解析后的Excel数据了。您可以根据具体需求,在组件中进一步处理和渲染这些数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值