vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值

这篇具有很好参考价值的文章主要介绍了vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


✏️ 1. 前端导出选中表格数据到本地成xlsx文件

//---- 导出表格到本地xlsx文件 ----
const webDerive = () => {
    ElMessageBox.confirm("是否确认导出选中数据?", "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
    }).then(() => {
        
    })
}

vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

1. 安装依赖

npm run xlsx

2. 引入,import * as XLSX from “xlsx”;
3. 报错找不到模块“xlsx”或其相应的类型声明

修改成大写就好了import * as XLSX from 'XLSX',如果没有报提示就直接用

4. 使用导出文件

//---- 导出表

格到本地xlsx文件 ----
const webDerive = () => {
    ElMessageBox.confirm("是否确认导出选中数据?", "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
    }).then(() => {
        //deleteDate  选中数据列表
        let tableData = [
            ['序号', '时间', '姓名', '地址', '收件地址']//导出表头
        ] // 表格表头
        deleteDate.forEach((item: any, index) => {
            console.log(item, item.name)
            let rowData = []
            //导出内容的字段
            rowData = [
                index + 1,
                item.create_time,
                item.name,
                item.address
            ]
            tableData.push(rowData)
        })
        let workSheet = XLSX.utils.aoa_to_sheet(tableData);
        let bookNew = XLSX.utils.book_new();
        XLSX.utils.book_append_sheet(bookNew, workSheet, '作品名称') // 工作簿名称
        let name = '全部人员'+ '.xlsx'
        XLSX.writeFile(bookNew, name) // 保存的文件名
    })
}

vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

✏️ 2. 通过接口获取文件流下载xlsx文件

1. 直接用a标签下载

//html
 <a href="http://xxxxxxx:8082/file/down" class="download" id="aupload">a标签导出文件流 </a>
 
//css
.download {
    display: inline-block;
    padding: 2px 10px;
    color: #409eff;
    background-color: #ecf5ff;
    border: 1px solid #52a4f6a4 !important;
    border-radius: 4px;
    text-decoration: none;
    margin-left: 12px;
}
.download:hover {
    color: #fff;
    background-color: #409eff;
    border: 1px solid #52a4f6a4 !important;
}

vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript
鼠标移入样式,点击自动下载
vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

2. 有特殊数据需要解析文件流方式

* 定义请求方式,axios

vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

   responseType:'blob', //记得添加

vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

* 下载文件流
    //引入请求方法
    import { download } from '../../api/upload'
    //在自己方法中法请求
    download().then(((res) => {
        const url = window.URL.createObjectURL(new Blob([res.data]));
        const link = document.createElement('a');
        let fname = '测试.pdf';
        link.href = url;
        link.setAttribute('download', fname);
        document.body.appendChild(link);
        link.click();
    }))

✏️ 3. 如何获取proxy对象中的值,以及‘ 提示不能将类型“xxx”分配给类型“xxx2” ’ 解决方案

1. 获取Proxy(Object)中数据方法

使用vue3.0时,因为底层是使用proxy进行代理的所以当我们打印一些值得时候是proxy代理之后的是Proxy
对象,Proxy对象里边的[[Target]]才是真实的对象。

  • 就比如选中表格单条数据时候,直接打印proxy里面的值可能会报undefined

vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

  • * 解决方法一:直接给item:any设置类型

vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript
下边两种事网上给的答案,目前在我这个场景感觉没用。相同场景就不用看下边了。

  • * 解决方法二:JSON.parse(JSON.stringify( ))
 deleteDate.forEach((item) => {
   let obj = JSON.parse(JSON.stringify(item))
   console.log(obj, obj.name)
 })

打印结果:
vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

  • * 解决方法三:import { toRaw } from’@vue/reactivity’;

能打印出来,但是会有警告“类型“never”上不存在属性“name”。所以还得加any,家里之后就没有警告了。
vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值,vue3+ts专栏,前端,vue.js,typescript

2. 提示不能将类型“xxx”分配给类型“xxx2”解决方案

不能将类型“xxx”分配给类型“xxx2”。ts(2322)
(property) Ref<string>.value: string。

as 是 TypeScript 中的类型断言操作符。它的作用是告诉 TypeScript
编译器某个值的确切类型,并强制将该值视为指定的类型。

类型断言有两种形式: 和 value as Type,在最新的 TypeScript 版本中,推荐使用 value as Type 的语法,因为它与 JSX 不会产生冲突。文章来源地址https://www.toymoban.com/news/detail-612339.html

1. 显式类型转换:当你比 TypeScript 编译器更了解某个变量的类型时,可以使用 as 来强制将其转换为你指定的类型,这样 TypeScript 不会给出类型检查错误。
let myVariable: any = "Hello";
let myNumber: number = myVariable as number; // 显式将myVariable转换为number类型

日常学习笔记,有路过的发现错误希望能指出!🙏

到了这里,关于vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详解Vite创建Vue3项目+vue-router+ts+vite+element-plus

    前言 在之前的文章中写过“Vue3+TS+ElementPlus的安装和使用教程【详细讲解】”,但那篇文章写的是创建vue3的项目没有使用到Vite构建工具进行创建还是使用的常规webpacket构建工具进行创建的。提到Vite和webpacket的时候我们可以简单说一下。 Vite 和 Webpack 都是现代化的前端构建工

    2024年01月18日
    浏览(62)
  • 从0开始搭建一个vue3+vite+ts+pinia+element-plus的项目

    前言:vue3+ts+vite大家已经都开始用了,最近也在学习,基本上是零基础开始ts的学习,很多语法知识是边写边查,没有系统的学习ts。此处展示从零开始,搭建的一个框架,方便拿来即用! 其中框架选择vue,语言选择typeScript 项目启动成功以后如下所示: 为了方便日常工作中

    2024年02月06日
    浏览(65)
  • vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示

    * 初始化node 查看node是否安装 node -v 初始化命令 npm init 初始化配置解释如下: 完成后会有一个package.json文件 * 安装可能用到的依赖 根据需求安装,我这里需要对接mysql,安装依赖 ,我是一次性安装完,后边会直接使用,也可以边安装边使用。如下 安装成功如下: * 配置文件

    2024年02月15日
    浏览(51)
  • 超级详细 最新 vite4+vue3+ts+element-plus+eslint-prettier 项目搭建流程

    系列文章目录 【element-plus】 table表格每行圆角解决方案 element也通用 【Vue3+Vite+Ts+element-plus】使用tsx实现左侧栏菜单无限层级封装 超级详细GitBook和GitLab集成步骤【linux环境】 1.1、项目创建 执行以下代码将vite将会自动生成初始的 vite4+vue3+ts的项目模板,pnpm、npm、yarn 选择一种执

    2024年02月04日
    浏览(77)
  • Vue3 + TS + Element-Plus —— 项目系统中封装表格+搜索表单 十分钟写五个UI不在是问题

    前期回顾 纯前端 —— 200行JS代码、实现导出Excel、支持DIY样式,纵横合并-CSDN博客 https://blog.csdn.net/m0_57904695/article/details/135537511?spm=1001.2014.3001.5501 目录 一、🛠️  newTable.vue 封装Table 二、🚩 newForm.vue 封装搜索表单  三、📝 TS类型 srctypesglobal.d.ts 四、♻️ 页面使用功能

    2024年01月24日
    浏览(63)
  • vue3使用element-plus

    element-ui 是配合 vue2 使用,element-plus 是配置 vue3 使用的 1. 包管理器的方式 如果是使用 webpack 或者 vite 打包工具新建的项目 2. 浏览器直接导入 直接通过浏览器的 HTML 标签导入 Element Plus,然后就可以使用全局变量 ElementPlus 1. 导入全部组件且注册所有的图标 声明使用 ElementPl

    2024年02月08日
    浏览(80)
  • Vue3导入Element-plus方法

    先引入依赖 main.js中要引入两个依赖 然后 这个东西 我们最好还是挂载vue上 所以 还是 然后 我们可以在组件上试一下用一个ElementUi的表格组件 参考代码如下 运行结果如下 也是没有任何问题

    2024年02月06日
    浏览(56)
  • vue3 element-plus 实现图片预览

    element-plus下有这么一个组件 el-image-viewer /,但是这个组件是没写在文档上面的,像普通组件一样使用即可 可以通过点击按钮实现图片预览,而非el-image组件只能通过点击图片实现预览 2.1封装组件 2.3组件使用 在需要使用的地方引入,然后使用即可,这不是重点,每个人使用的

    2024年02月15日
    浏览(59)
  • vue3项目搭建并配置element-plus

    安装完成后,输入如下指令查看vue的版本: 选择一个要存放项目的目录,打开小黑窗输入如下命令: 一开始输入项目名称或者默认vue-project,然后根据需求选择Yes/No 生成完项目后,输入如下指令: src/main.js里引入 index.css的文件位置根据实际情况写,也有可能是 const app后面加

    2024年02月13日
    浏览(62)
  • vue3+element-plus上传文件,预览文件

    vue3+ts+element-plus上传文件,预览文件 场景:使用element-plus的el-upload标签,手动上传文件,可预览docx,xlsx,pdf,jpg,jpeg,png(本地资源以及网络资源)。 1、使用el-upload标签 检查上传文件的文件格式与大小 上传的附件信息在fileList中,组装接口所需数据进行上传 使用docx-preview插件预览

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包