Vue页面中导入导出文件内容

将Json数据导出为Json文件或Excel文件;

读取外部Json文件或Excel文件内容使用;

1.从Json文件导入数据

使用ant design vue的upload组件,在上传文件中触发读取文件内容:

<a-upload @change="importJsonFile" >

   <a-button>

    <upload-outlined></upload-outlined>

    Json文件导入数据

   </a-button>

  </a-upload>

importJsonFile(file){

   if(file){

    const readerJson=new FileReader()

    readerJson.onload=()=>{

     const result=JSON.parse(readerJson.result)

     this.saveExcelFileData=result//result为读取文件内容

     //console.log(result)

    }

    readerJson.readAsText(file.file.originFileObj)

   }

  },

2.从Excel文件导入数据

要操作excel文件,vue中下载安装依赖XLSX

$npm install xlsx –-save

在组件中import使用

import * as XLSX from 'xlsx'

//从Excel文件导入的

  importExcelFile(file){

   if(file){

    // 通过FileReader对象读取文件

    const reader = new FileReader();

    // readAsArrayBuffer之后才会启动onload事件

    reader.onload = () => {

     const data = new Uint8Array(reader.result)

     const { SheetNames, Sheets } = XLSX.read(data, {type: 'array'})

     console.log(SheetNames, Sheets, '列')

     

     SheetNames.forEach(item=>{

      const workSheets = Sheets[item]

      const sheetRows = XLSX.utils.sheet_to_json(workSheets);

      this.saveExcelFileData=sheetRows

      //console.log(sheetRows, '转换的excel') 

     })

    }

    // uploadFile是上传文件的文件流

    reader.readAsArrayBuffer(file.file.originFileObj)

   }

  },

3.导出数据为Json文件

需要安装依赖file saver

$npm install file-saver -–save
<a-button type="success" @click="saveJsonFile()">数据导出为Json</a-button>

<a-button type="success" @click="saveExcelFile()">数据导出为Excel</abutton>
saveJsonFile(){

   const data=new Blob([JSON.stringify(this.saveExcelFileData)],{

    type:'text/plain;charset=utf-8',

   })

   FileSaver.saveAs(data, 'saveFile.json')

  },


4.导出数据为Excel文件

saveExcelFile(){

   // 自定义下载的header,注意是数组中的数组哦

   const Header = [['编号', '姓名']]

   // 将JS数据数组转换为工作表。

   const headerWs = XLSX.utils.aoa_to_sheet(Header);

   const ws = XLSX.utils.sheet_add_json(headerWs, this.saveExcelFileData, {skipHeader: true, origin: 'A2'})

   /* 新建空的工作表 */

   const wb = XLSX.utils.book_new()

   // 可以自定义下载之后的sheetname

   XLSX.utils.book_append_sheet(wb, ws, 'sheetName')

   XLSX.utils.book_append_sheet(wb, ws, 'sheetName1')

   /* 生成xlsx文件 */

   XLSX.writeFile(wb, 'saveFile.xlsx')

  },

5. 从Docx导入

//从Docx文件导入

   importDocxFile(file){
// 通过FileReader对象读取文件
     const readerDocx = new FileReader();
     // readAsArrayBuffer之后才会启动onload事件
     readerDocx.onload = () => {
      const result=readerDocx.result
      mammoth.convertToHtml({arrayBuffer:result}).then(r=>{
       this.addConcept.contents=r.value
//console.log(r.value)
      })
     }
     // uploadFile是上传文件的文件流
     readerDocx.readAsArrayBuffer(file.file.originFileObj)
   }

6.从Txt导入

//从txt文件导入的

   importTxtFile(file){
     const readerTxt=new FileReader()
  
     readerTxt.onload=()=>{
      const result=readerTxt.result.toString()
      this.addConcept.contents=result
      console.log(result)
     }
     readerTxt.readAsText(file.file.originFileObj,"GB2312") //使用UTF-8会乱码
   },

猜你喜欢

转载自blog.csdn.net/gcf10080353/article/details/130618705