qt写入带有逗号的内容到csv文件

一、问题描述

我想要得到的文件(标记为文件1):

代码生成的文件(标记为文件2):

 代码如下:

void MainWindow::on_exportCsv_clicked()
{
    //获取创建的csv文件名
    QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), "" ,tr("Files (*.csv)"));
    if (fileName.isEmpty())
        return;

    //打开.csv文件
    QFile file(fileName);
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        qDebug("Cannot open file for writing: %s",qPrintable(file.errorString()));
        return;
    }
    QTextStream out(&file);

    //创建表头
    out << tr("信息,") << tr("数字,") <<",\n";

    //写入内容
    for(int i = 0; i < 1; i++)//写入1行
    {
        out << "test,1,2,3" << "," << i << "\n";
    }
    //关闭文件
    file.close();
}

 

分析:

我们直接用记事本打开上述两个文件:

文件1:

信息,数字,
"test,1,2,3",0

文件2: 

信息,数字,
test,1,2,3,0

大家应该能看到问题所在了吧,qt在写入字符串的时候没有加上双引号,导致信息中的","被识别为csv文件中的分隔符了。

 

解决办法:

解决办法也简单,手动加上即可(注意加上转义字符)!修改后的代码:

    //写入内容
    for(int i = 0; i < 1; i++)//写入1行
    {
        out << "\"" << "test,1,2,3" << "\"" << "," << i << "\n";
    }

 

ref:

https://blog.csdn.net/wwwlyj123321/article/details/112673439

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页