Springboot系列(二十二):如何纯文本转成.csv格式文件?|超级详细,建议收藏

news2025/1/16 21:14:49

一、前言🔥

       不知道大家有咩有遇到这么个需求,给你一长串文本,要求你能导成excel格式展示数据,一时间我陷入了沉思,如果要常规转excel,最明显的一点就是固定表头名,然而并不是,这表头名是动态给的,连字段名都不相同,这可如何是好。

       我突然想到了,既然excel格式文件难以转换,那我可以转成csv格式文件啊。

那么有的小伙伴肯定就会问了,

CSV文件?这是种啥文件?

拓展:

CSV文件

       由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是

逗号

或制表符。

       既然需求说只是转换成更直观的数据格式,那么csv文件其实跟excel表格展示毫无差别。

... ...

       那我就来试试,顺便总结成文,希望能帮助到有需要的小伙伴。

接下来,我就开始本期教学啦。

二、正文🔥

       首先我们要把握一点,我们既然要写成.csv文件,那么你的文本格式就必须得按这种排版形式来,比如如下这段。

id,name,  age, address,
1, 李白,  18,  江西赣州,
2, 王昭君,2,   上海闵行,
3, 赵云,  30,  北京朝阳,
4, 后羿,  52,  深圳龙岗,
复制代码

       很明显就是一段有顺序的文本,然后写入.csv文件,就可以啦。大家其实也可以做这么个试验,你在一个.txt文本中写入上方格式文本,然后将文件修改后缀成,csv,你们会发现一件事,其实就成了。

       直接修改文件后缀,我们直接强制修改。

       不要惊讶,只不过是中文乱码,这也是你强制修改文件格式所至。但是起码校验了文本格式按照如上格式,就可以成功转成csv文件。

好啦,接下来我就带着大家如何代码实现吧!

三、代码实现🔥

首先我们定义好生成.csv文件的方法。具体实现如下:

    /**
     * 将字符串转成csv文件
     */
    public void buildCsvFile(String savePath,String contextStr) throws IOException {

        File file = new File(savePath);
        //创建文件
        file.createNewFile();
        //创建文件输出流
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        //将指定字节写入此文件输出流
        fileOutputStream.write(contextStr.getBytes("gbk"));
        fileOutputStream.flush();
        fileOutputStream.close();
    }
复制代码

然后我写个testcase来进行测试一波。

我就直接指定项目根目录作为文件存放地址啦,这样也方便我们更直观查验。

package com.example.demo.component.file;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.IOException;

/**
 * @author luoYong
 * @version 1.0
 * @date 2022/9/2 14:29
 */
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UploaderTest {

    @Autowired
    private Uploader uploader;

    @Test
    public void testBuildCsvFile() throws IOException {

        //存放地址
        String path = "./template/test.csv";
        //拼接好转接的内容(这里我们就模拟一下啊)
        String word = "";
        //先把第一列表头固定好
        String tableNames = "id,name,age,address";
        //接着就是对于的数据内容。
        String oneRows = "1,李白,18,江西赣州";
        String twoRows = "2,王昭君,2,上海闵行";
        String threeRows = "3,赵云,30,北京朝阳";
        String fourRows = "4,后羿,52,深圳龙岗";

        //每一行都要换行
        word += tableNames + "\r\n";
        word += oneRows+ "\r\n";
        word += twoRows+ "\r\n";
        word += threeRows+ "\r\n";
        word += fourRows+ "\r\n";

        //调用方法生成
        uploader.buildCsvFile(path,word);
    }


}
复制代码

我们先来打个断点查验一下,我们的文本是否按格式换行。

点一下[View]我们可以看到完整的文本格式。具体如下截图:

       文本格式毫无问题,我们放开断点,刷新项目目录,可以看到我们指定的路径下生成了我们刚定义的[test.csv]文件。

具体我们通过excel工具将生成的[test.csv]文件打开,具体展示如下:

       完全没有问题,具体需求呢,你们结合起来我的示例即可,很简单的一种实现方式,虽然low点,但是压根不需要导入其他的工具jar包,纯手实现。

... ...

       ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看我的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬的。好啦,咱们下期见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/44766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计springboot冬奥资讯系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【DL with Pytorch】第 2 章 : 神经网络的构建块

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

第一个Shader Graph

上篇我们用ShaderLab来实现了第一个Shader,但对于初学者也太复杂了,那有没有简单的方式来实现shader的操作呢? 现在我们来分享下ShaderGraph,可视化编程,如图所示 ShaderGraph介绍 ShaderGraph是2018年推出的,可以看下官网出的例子https://github.com/UnityTechnologi…

[Linux] 进程程序替换之实现一个简单的shell

进程程序替换替换原理替换函数实现一个简单的shell主要过程实现代码替换原理 用fork创建子进程后执行的是和父进程相同的程序,若要执行不同的代码分支,子进程往往要调用一种exec函数以执行另一个程序;当进程调用一种exec函数时,该…

信息论与编码:随参信道特性

文章目录随参信道数学模型的建立随参信道对信号传输的影响平坦性衰落及频率选择性衰落1.平坦性衰落Rayleigh 分布Rice 分布2.频率选择性衰落多径随参信道的时延扩展与相干带宽随参信道的多径时延特性多径信道的频域特性移动信道的多普勒扩展及相干时间1.多普勒扩展2.信道的相干…

nodejs大前端从入门到精通一

一、nodejs架构 nodejs核心组成Natives Modules 当前层内容由JS实现提供应用程序可直接调用库,例如fs、path、http等JS语文无法直接操作底层硬件设置 在和硬件交互的的桥梁,通过Builtin Modules(胶水层) 底层: V8:执行JS代码&…

Android——Theme和Style-由浅入深,全面讲解

1、官方详细解读 样式和主题背景 | Android 开发者 | Android Developers 2、应用场景 类似web设计中css样式。将应用设计的细节与界面的结构和行为分开。 样式style :应用于 单个 View 的外观。样式可以指定字体颜色、字号、背景颜色等属性 主题theme&…

【仿牛客网笔记】项目发布与总结——单元测试、项目监控

在项目上线之前需做好单元测试,平时开发的过程中,每个功能也需要进行单元测试。 验证注解的作用,注解是修饰方法的。 每次调方法都是静态的 对test1和test2分别进行运行 通过类进行运行,运行所有的方法 测试帖子的Service&#x…

【序列召回推荐】(task5)多兴趣召回Comirec-DR

note: 多兴趣召回建模。Comirec论文中的提出的第一个模型:Comirec-DR(DR就是dynamic routing),阿里将用户行为序列的item embeddings作为初始的capsule,然后提取出多个兴趣capsules,即为用户的…

【Java】博客系统——详细解释+代码+详细注释(课设必过)

目录 前言 博客系统简要分析 一、数据库的设计 1.1 分析 1.2 代码实现(创建数据库和表) 二、封装数据库(JDBC代码的编写) 2.1、首先通过创建Maven项目,基于Small Tomcat部署 servlet; 2.2、封装数据…

telnet配置设备远程管理—eNSP

案例:给路由器配置远程管理,使一台路由器远程管理另一台。 所需设备:两台路由器,一根网线 图示 一、给两台设备配置IP地址 AR1(以下命令) a. sy b. int g0/0/0 c. ip add 1.1.1.1 24AR2 a. sy b. int g0/0…

区间信息维护与查询【线段树 】 - 原理1 线段树的基本操作

区间信息维护与查询【线段树 】 - 原理1 线段树的基本操作 线段树(segment tree)是一种基于分治思想的二叉树,它的每个节点都对应一个[L , R ]区间,叶子节点对应的区间L R 。每一个非叶子节点[L , R ]其左子节点的区间都为[L , (…

进程与线程的区别及联系

目录 1. 操作系统功能简介 2. 进程 2.1 认识进程 2.2 进程操作系统中如何管理 2.3 PCB如何描述 2.3.1 pid 2.3.2 内存指针 2.3.3 文件描述符表 2.3.4 进程调度相关属性 3. 内存管理 4. 线程 4.1 认识线程 4.2 进程与线程的关系 4.3 线程安全问题 1.操作系统功能简…

[附源码]计算机毕业设计springboot电子相册管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Git 入门 拉取仓库和推送仓库

目录 基本操作 本地建立仓库并推送到远端仓库 关联仓库失败 解决方法 从远端仓库拉取文件到本地 私有的仓库的连接 修改 提交者名称 IDEA/Pycharm等如何使用git 如何关闭git 功能 Git操作主要分为两类 ,如何把自己建的项目同步的网上的仓库,如何…

OpenHarmony编译系统

GN 简介 直接百度 GN 入门 可以参考下面的示例,作为入门参考学习https://blog.csdn.net/weixin_44701535/article/details/88355958https://gn.googlesource.com/gn//main/docs/reference.mdhttps://chromium.googlesource.com/chromium/src/tools/gn//48062805e…

Java项目_在线点餐系统(jsp+sevlet+mysql)(含论文)

在线点餐系统(jspsevletmysql一、系统介绍二、功能展示1.主页(用户)2.菜单(用户)3.用户注册(用户)4.用户登陆(用户)5.我的订单(用户)6.餐桌管理(管理员)7.菜系管理(管理员)8.菜品管理(管理员)9.订单管理(管理员)三、获取源码一、系统介绍 系统主要功能: 用户&#…

4位资深专家多年大厂经验分享出Flink技术架构设计与实现原理

时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。 写这一套 Java 面试…

bootstrap下拉菜单学习(五)

组件:下拉菜单 bootstrap字体图标和下拉菜单组件的使用 这些图标都存在我们引入的font文件夹内: 复制bootstrap所用的包: 创建html页面: 图标不仅可以直接放文本里面, 还可有结合按钮去用。 要使用组件:不…

《网络空间测绘技术与实践》正式发售,让网络空间作战“有图可依”

近日,多位业界专家力推,由知道创宇CEO赵伟、CTO杨冀龙、CSO黑哥(周景平)等撰写的著作《网络空间测绘技术与实践》,正式出版并发售。网络空间已成为继“陆、 海、空、天”后的第五大空间,网络空间亦需要类似…