一、问题描述
我想要得到的文件(标记为文件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