解决iview中表格导出Excel时单元格内不换行的问题

vue组件 导出excel,并且可以合并单元格,设置宽度,字体颜色,换行等 需求:在开发后台管理系统中,经常会有导出表格的需求,本案例实现了在导出时,可以合并单元格,设置单元格字体颜色和宽度,插件:xlsx(0.18.4),xlsx-style(0.8.13),file-saver(2.0.5) 阅读详情

分享一篇解决iview中表格导出Excel时单元格自动换行问题的文章

1.遇到问题的过程

最近的项目中有将表格内容导出到Excel表格的需求,正好我们使用的是iview框架。在iview中的table组件自带表格导出到Excel功能,于是开心的直接使用:

html:
<Table :columns="columns" :data="data" size="small" ref="myTable"></Table>
<Button type="primary" size="large" @click="exportData"> Export data</Button>

script:
exportData(){.
 this.$refs.myTable.exportCsv({
 filename: 'myTable'//导出Excel的文件名
 })
}

在我们在table中没有换行的数据时导出的表格很正常。当我们的某个单元格中数据过多需要换行时导出的表格出现了不是单元格内换行而是直接换到Excel表格的下一行。请看下图:
页面的Table数据
这里写图片描述
导出的Excel(不是单元格内换行….)
导出的Excel

2.解决问题的过程

1).找到问题原因
通过各种测试,找到问题的原因是由于server返回值中有换行字符”\n”。既然如此那将字符传”\n”替换为空:

//将表格数据过滤
exportData(){.
 this.$refs.myTable.exportCsv({
 filename: 'myTable',
 data: this.$formatExcelData(this.data)
 })
}
//公共方法
Vue.prototype.$formatExcelData = function (data) {
        var arr = []
        var self = this
        var dateArr = ['createDate', 'fixedDate', 'reportDate']
        _.forEach(data, function (v) {
            for (var k in v) {
              if (typeof v[k] == 'string') {
                    v[k] = v[k].replace(/\n/g, '')
                }
            }
            arr.push(v)
        })
        return arr
    }

改完后,重新测试。果不其然,表格中没有换行。但是,单元格内的换行也没有了。
结论:”\n”使Excel表格产生了换行,去除可以解决换行。但是我们需要一个方法能将”\n”作用于单元格内。
2).寻找解决方法
操作系统问题
之前遇到过换行问题是由于操作系统不同导致的。尝试下将”\n”换成”\r\n”(window中换行)

v[k] = v[k].replace(/\n/g, '\r\n')//失败

模仿键盘操作
再想想,Excel中是alt+enter键换行单元格,但是如何表示。在Google上搜索相关,发现键盘的每个键对应着个ASCLL码,如果将”\n”替换成对应的ASCLL呢?
查询了键盘的ASCALL码Alt对应\0\x0A

v[k] = v[k].replace(/\n/g, '0x12 0x0A')//换到下一列了,感觉距离解决问题更近了(原因没有深究,有兴趣的可以去研究下)

3.问题解决

搞了一天问题仍没有解决,由于时间问题想想还是去请教下我们左C++的大佬吧(Excel核心就是C++)然后就解决了…
需要在我们传入的数据中加上”,如下:

v[k] = '"'+v[k]+'"'//成功

后面自己有空有思考了下这种问题如果借助一些工具应该能够更好的理解,那应该更有助于我来解决这个问题。此时想到了Notepad++这个神级编辑器。打开Notepad++,如下操作:
视图 =》 显示符号 =》 显示所有
将单元格内换行的单元内容复制到notepad++ 和 我们自己生成的Excel中换行的相比较请看下图:

单元格内换行的
直接换行的
差别一目了然,相差了一对字符传(内心中一万头草泥马奔腾而过,困扰我两天的问题,还是别人帮忙解决的,看来自己还需加倍努力….)。
总结:写这篇文章主要的目的不是为了记忆”ivew导出表格的单元格换行需要加字符串的知识点”,这钟问题相信只要看过一次都能记住这个解决方法。这篇文章主要是为了记录解决问题的方式,以及如何借助一些工具去理解问题。
(ps:最近慢慢的将博客在掘金同步更新了,有同道的小伙伴可以去相互了解了解)

VUE导出Excel,两种方法,方法二带样式:文字居中,自动换行,列宽设置,单元格合并,冻结表头等 SheetJS免费版的不支持格式,比如居中、自动换行都不行。xlsx-style是SheetJS的一个分支,且支持各种格式,可以做到文字居中,自动换行,列宽设置,单元格合并,冻结表头等。 立即下载

相关推荐

Unity 2022打包Android APK:手把手教你创建和配置第一个签名Keystore(避坑指南)

本文详细介绍了Unity 2022打包Android APK时创建和配置签名Keystore的全流程,包括环境准备、Keystore创建、高级配置避坑指南以及签名验证与故障排查。特别强调了Android应用签名的重要性及安全维护策略,帮助开发者避免常见错误,确保应用顺利发布。

weixin_27379781的博客 241

vue表格中的内容换行与导出Excel换行

日常开发中遇到需要在表格的某列属性的内容中换行。还有表格的内容中的内容同样也要换行.2、使用 /n 等换行符,那可能需要多补充设置下css。3、Excel内容要换行用这个去全局替换。

MIYAOW 3963

华为昇腾Atlas200DK. CANN模型推理——目标检测结果不对(无检测结果)的问题解决

目录前言问题描述问题排查1.后处理模块问题排查2.预处理模块问题排查3.模型问题排查4.算法bug问题排查5.AI板卡问题排查6.模型精度问题排查6.模型推理问题解决:模型输入数据与预处理不同后记 前言 上周我在华为昇腾Atlas200DK中部署nanodet和yolov5时,出现了目标检测结果不对(没有检测到任何物体),困扰了整整三天,最后找到原因并圆满解决,在这里记录一下debug过程。 以上测试均在python中完成。 问题描述 第一天上午,我首先将nanodet由pytorch的.pth模型转换为.

qq_41035283的博客 5604

纯前端js(或者vue)导出excel实现:合并单元格、设置单元格样式、单元格内换行

纯前端实现js导出excel可以设置导出的excel的样式 合并单元格,单元格内自动换行,添加边框和设置字体的样式和颜色

qq_42688511的博客 2万+

Windows 10 下 Nacos 3.0.2 单机版保姆级安装教程(含JDK 17配置与MySQL 8.0连接避坑)

本文提供Windows 10下Nacos 3.0.2单机版的详细安装教程,涵盖JDK 17配置、MySQL 8.0连接优化及生产级安全设置。通过步骤详解和常见问题解决方案,帮助开发者快速完成Nacos的安装与配置,确保服务发现与配置管理的高效运行。

weixin_29237635的博客 320

【大二组培训】2017年电子设计大赛H题总结(软件部分)

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt im

HAIBARA的博客 3021

导出excel 中 换行符的问题

在导出excel 的时候,如果原始文字中含有 \n 字符,生成的excel中 会生成 _0040_ 字样的乱码, 如果把 \n 替换为,excel不会识别成换行符 excel 认可 char(10)作为换行符: actDesc = actDesc.trim().replaceAll("\n", String.valueOf((char)10));

shannonlee的专栏 1万+

VBA解决Excel批处理任务之:批量修改Sheet名称

针对需要批量处理大量的Sheet改名的场景,使用VBA是非常便捷的方式。 简单介绍几种方法: 1. 录制宏法: 录制宏是用Excel自带的工具把改名改成一个可以复制操作的动作。 这里选择录制,会弹出一个宏设置窗口: 这里设置好宏名称就好,然后确定就可以开始录制你的操作。操作完成之后,再进入到宏窗口点击结束录制: 这样就可以通过执行来运行了,运行方法: 1. 通过选择宏: ...

跬步至千里 1万+

导出excel换行问题,一个单元格多张图片问题,数组对象去重处理,计算属性传参

导出excel换行问题, 一个单元格多张图片问题, 数组对象去重处理, 计算属性传参

qq_36958916的博客 1321

22、忆阻器、忆阻系统及其神经形态应用综述

本文综述了忆阻器与忆阻系统的理论基础及其在神经形态系统中的广泛应用。从忆阻器的基本定义出发,介绍了其在非线性电路、存储技术、通信和神经形态计算等领域的应用潜力。重点探讨了基于忆阻器的神经元模型(如Hodgkin-Huxley、FitzHugh-Nagumo和Hindmarsh-Rose模型)、突触实现方式及多种忆阻神经网络架构,包括细胞神经网络、脉冲神经网络和递归神经网络等。此外,深入分析了忆阻器在水库计算中的理论研究与硬件实现进展,展示了其在时间序列处理、模式识别和信号预测等方面的优异性能。尽管忆阻技术前

kiwi8的博客 207

Unreal5从入门到精通之如何录制360°VR全景视频

摘要:本文详细介绍了使用虚幻引擎(UE)生成360°全景视频的完整流程。首先需启用MovieRender Queue和Panoramic Capture插件,准备场景并设置相机序列。通过影片渲染队列选择8K分辨率输出PNG序列帧,利用ffmpeg工具转换为MP4格式,最终获得高精度全景视频。该方法适用于VR内容开发,能以较低性能消耗实现影院级画质,特别适合冥想类应用场景。教程涵盖从插件配置到后期合成的全链路操作,为开发者提供高效的全景内容生产解决方案。(150字)

TxNet 1402

分享几个SQL例子

昨天女朋友说:你有博客没有? 想想由于自己比较懒,把博客搁置了。 于是今天再重新捡起来吧。可是第一篇写点什么呢? 想着女朋友是做 数据分析的,SQL比常用,那就先分享一点SQL脚本的吧。哈哈哈 1,首先看个细节 select u.lastname,u.firstname,avg(u.salary) from user_table u group u.lastname; 那么这个脚本是否正确呢? 答...

weixin_42135151的博客 1996

YOLO11改进策略【独家融合改进】| RCSOSA + SPD + WFU

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。WFU模块通过小波变换的频率分解与跨尺度融合机制,解决了传统上采样过程中的混叠和细节丢失问题,实现了高效、高保真的面部细节重建。

Limiiiing的博客 449

excel序号字段增加_介绍一下EXCEL中最被忽略的常用功能

这几天断更了,主要是感觉我越写EXCEL的知识,越是感觉我了解的越少。白天在百度知道里帮网友解决问题中也发现发现平时引以为傲的解决套路,在好多地方都解不了问题。所以,我决定重新拿起书本,从小白开始,再啃一遍。杯中水倒空,才能获得更多的水。今天先把上一篇发文中留的问题解答一下,如何提取车牌号的尾数,以便提醒限行日期?LOOKUP&MID&ROW函数提取车牌号抱歉,拖了好几天才回答。如...

weixin_39717443的博客 559

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

vue 前端导出excel xlsx插件 修改表格行高列宽度

vue 前端导出excel xlsx插件 修改表格行高列宽度

qq_20805455的博客 8157

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

html br 如何导出到excel,如何将页面的<br/>在Excel中正确换行

在页面的导致导出Excel中是会以多行的方式显示,达不到页面在一个单元格中进行换行,为此我们有以下两种方式:1.CSS样式方式2.JS方式,如果能够100%命中的话,采用这种方式最好。function toPcmExcel() {var myExcel, myBook;try {myExcel = new ActiveXObject("Excel.Application");} catch (e)...

weixin_36015177的博客 1465

iview中Table组件表格一行内容溢出部分使用...(省略号)来显示

iview中Table组件表格一行内容溢出部分使用...(省略号)来显示

li15565348506的博客 2796

iview使用问题汇总

iview使用经验总结

Myron_007的博客 593

使用Vue+xlsx+xlsx-style实现导出自定义样式的Excel文件

本文就是上一篇《使用Python+openpyxl实现导出自定义样式的Excel文件》文章中提到的“之前项目的导出Excel文件操作都是在前端完成的...”这段话中基于前端实现的导出Excel文件方法。

都随它大小便吧 6538

文本一行显示不换行

white-space:(不允许文本换行)word-break:(不循序文本断开)

ct5211314的博客 540

使用js-xlsx纯前端导出excel

地址点击此处前往

Ytwinklestar的博客 309

iview中table表头内容换行展示

在data中定义表头column。在methods中定义方法。以上结合能实现表头换行展示。在css中结合样式实现。

Zxiuping的博客 1396

nodejs使用xlsx和xlsx-style导出Excel文件

nodejs 导出 Excel 安装依赖 npm install xlsx --save npm install xlsx-style --save npm install fs --save 修改文件 在导出 xlsx 文件中 表格展示内容样式错误 请修改下列文件部分内容。 在 node_modules/xlsx-style下的xlsx.js文件中,把 write_ws_xml_data()替换成下列这个,导出excel没有样式,直接修改方法。 function write_ws_

Jane的博客 3402

Excel导出\n没生效需要鼠标双击才换行的解决办法(有导出模板)

在Excel导出模板选择需要换行的列 全选列 选择自动换行

zmh_csdn的博客 3802
上一篇: vue 项目中ivew按需引入
下一篇: vue使用总结(3)生命周期篇
厌笔不萧生
博客等级 码龄10年 5粉丝 36原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值