QT导出excel之特殊字符处理

281 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在处理csv时,经常遇上特殊字符处理的情况,比如逗号,回车,要知道这些字符本身就是csv的分隔符与换行符。

经常遇上的问题如下:

void MainWindow::on_pushButton_4_clicked()
{
    QString strFilePath = "D:\\temp\\test.csv";
    FILE *fp = fopen(strFilePath.toStdString().c_str(), "w+");
    qDebug()<<fp<<"\n";
    QString LogStr = "学号,姓名,做的事情\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    qDebug()<<fp<<"\n";
    LogStr = "1,小明,吃饭,学习\n做操\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    qDebug()<<fp<<"\n";
    LogStr = "2,小红,吃饭,学习\n做操\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    LogStr = "3,小李,吃饭,学习\n做操\n";
    qDebug()<<fp<<"\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    fclose(fp);
}

image.png

明显可以看到,做的事情况,都到学号里面了,这就乱了。 怎么解决这一个问题呢? 看下面:

void MainWindow::on_pushButton_4_clicked()
{
    QString strFilePath = "D:\\temp\\test.csv";
    FILE *fp = fopen(strFilePath.toStdString().c_str(), "w+");
    qDebug()<<fp<<"\n";
    QString LogStr = "学号,姓名,做的事情\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    qDebug()<<fp<<"\n";
    LogStr = "1,小明,\"吃饭,学习\n做操\"\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    qDebug()<<fp<<"\n";
    LogStr = "2,小红,\"吃饭,学习\n做操\"\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    LogStr = "3,小李,\"吃饭,学习\n做操\"\n";
    qDebug()<<fp<<"\n";
    fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
    fclose(fp);
}

image.png 哈,这样就可以,这就是,我想要的效果。