qt 5.12中,怎么将csv文件均分成多个csv文件?
时间: 2024-01-07 10:20:54 浏览: 82
大的CSV文件分割成小的csv文件
在Qt 5.12中,你可以使用QTextStream类来读取csv文件,并使用QFile和QTextStream类来写入csv文件。以下是一些示例代码,可以帮助你将一个csv文件均分成多个csv文件:
```c++
// 假设你要将csv文件分成n个文件,每个文件的数据行数为m
int n = 5; // 将csv文件分成5个文件
int m = 10; // 每个文件的数据行数为10行
QFile inputFile("your_file_path.csv");
if (!inputFile.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&inputFile);
int lineCount = 0;
int fileIndex = 0;
QFile outputFile(QString("output_file_%1.csv").arg(fileIndex));
QTextStream out(&outputFile);
while (!in.atEnd()) {
QString line = in.readLine();
if (lineCount == 0) {
out << line << "\n";
} else {
if (lineCount == m) {
outputFile.close();
fileIndex++;
outputFile.setFileName(QString("output_file_%1.csv").arg(fileIndex));
if (!outputFile.open(QIODevice::WriteOnly | QIODevice::Text))
return;
out.setDevice(&outputFile);
out << line << "\n";
lineCount = 0;
} else {
out << line << "\n";
}
}
lineCount++;
}
inputFile.close();
outputFile.close();
```
在这个示例代码中,我们首先打开输入的csv文件,并使用QTextStream类读取每一行。我们使用lineCount变量来跟踪已经读取的行数,并使用fileIndex变量来跟踪当前输出文件的索引。我们还使用QFile和QTextStream类来写入csv文件。
我们首先写入第一行数据(即csv文件头),然后在循环中处理每一个数据行。如果当前行是第m行,我们就关闭当前输出文件,增加fileIndex变量的值,并打开下一个输出文件。否则,我们将当前行写入当前输出文件并增加lineCount变量的值。在循环结束后,我们关闭输入文件和最后一个输出文件。
希望这可以帮助你将一个csv文件均分成多个csv文件!
阅读全文