Qt中对数据的读取、写入操作(Excel、txt)

在进行开发、测试时,不可避免的需要验证数据是否已经正确的按照我们的需求进行了计算,直接采用在控制台或结果输出界面输出的方式,除了会导致数据刷屏、卡顿外,数据也不能直观的让我们进行判断和分析。
为此,将数据导入到excel或txt中可以更直观的将相关的数据进行一一对应,且可以通过控制数据写入位序、行号的方式进行原始、处理后的数据的一一对应。
在此先简单介绍一下在Qt中读取、写入到Excel、txt的操作办法,后续遇到更多需求我会及时更新。

1.Qt中读取txt数据

    std::ifstream ptr_file;
    int M = 2;
    int N = 1024;
    ptr_file.open("C:\\Users\\87706\\Desktop\\data.txt");
    if (!ptr_file) return 0;
    for (int i = 0; i < M; i++)//行循环
        {
            for (int j = 0; j < N; j++)//列循环
            {
                double data;
                ptr_file >> data;
                if ((i % 2) == 0)
                {
                	    (*datastruct).Y[j] = data;
                }
                else
                {
                        (*datastruct).Z[j] = data;
                }
            }
        }
    ptr_file.close();

首先需要引用#include 头文件,然后创建一个接受txt数据的对象ifstream ptr_file,通过open操作打开指定路径下的文件如:
ptr_file.open(“C:\Users\87706\Desktop\data.txt”);
!!!请注意,在Qt中请使用\,否则会出现文件打不开的情况,可能是语法就是这样的,也要注意斜杠防线不用弄错!!!
然后就可以通过循环,来找到指定的行和列的指定元素啦,我这里就是简单的读取了两行数据,具体需要根据自己的数据进行赋值处理。
最后使用close操作就可以关闭你所打开的文件了。可以参考我上述的代码进行试验。

2.Qt中写入txt数据

    std::string TXT_PATH = "C:\\Users\\87706\\Desktop\\data.txt";//这个路径中的.txt我测试的时候好像不用加也可以正确生成txt文件,带我研究一下在进行分析
    ofstream txt;
    txt.open(TXT_PATH);
    //lem为你要遍历存入的数据大小
    for(int i=0 ; i< len ; i++)
    {
        if(txt.is_open()) txt<<data[i].x<<"  ";
    }
    txt<<"\n";
    for(int i=0 ; i< len ; i++)
    {
        if(txt.is_open()) txt<<data[i].y<<"  ";
    }
    txt.close();

在使用Qt将数据写入txt的时候,可以根据上述操作,首先创建一个地址,这个即是你生成的txt所存储的地方,请注意,这个也需要使用\来指定路径。
在txt中,如果想要使数据之间产生一定间隔可以如我一样在每个数据之间增加几个空格,如果需要换行则使用\n来切换至下一行进行数据输入
3.在Qt中读取Excel表格的数据

    std::ifstream file("path/to/your/csv/file.csv");
    if (!file)
    {
        std::cout << "Failed to open file." << std::endl;
        return -1;
    }

    std::string line;
    while (std::getline(file, line))
    {
        std::stringstream ss(line);
        std::string field;
        while (std::getline(ss, field, ','))
        {
            // Do something with each field
            std::cout << field << std::endl;
        }
    }

首先打开CSV文件并创建一个ifstream对象来读取文件。然后,我们使用while循环逐行读取文件中的内容。对于每一行,我们使用stringstream来分割字段,并使用while循环遍历每个字段进行处理。在这个示例中,我们仅仅使用std::cout输出每个字段的值。注意更改为你的实际路径。
4.在Qt中将数据保存至excel表格中

    std::string CSV_PATH = "C:\\Users\\87706\\Desktop\\/yuanshi_xianxingchazhi0810.csv";
    ofstream csv;
    csv.open(CSV_PATH);
    int len = homogenize_profile.get_profile_len();
    for (int i = 0; i < len; i++)
    {
        if (csv.is_open())
        {
            csv << data[i].x << ",";
        }
    }
    csv << "\n";
    for (int i = 0; i < len; i++)
    {
        if (csv.is_open())
        {
            csv << data[i].y << ",";
        }
    }
    csv << "\n";
    csv.close();

过程基本与txt写入数据类似,但是在数据写入每一个小格时,如果想在同一行插入不同列,则在循环中使用逗号来进行列之间的切换,如果想要将数据写入不同行,则通过\n来进行换行操作。
如果各位码友有其他需求可以评论或者私信联系我,如果感觉文章对你有帮助的话欢迎关注点赞支持!

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值