遍历QSqlTableModel并导出到.csv可以通过以下步骤实现:
QSqlTableModel model;
model.setTable("your_table_name");
model.setDatabase(QSqlDatabase::database("your_connection_name"));
model.select();
QFile file("output.csv");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream stream(&file);
// 写入表头
for (int i = 0; i < model.columnCount(); i++) {
stream << model.headerData(i, Qt::Horizontal).toString();
if (i < model.columnCount() - 1)
stream << ",";
}
stream << "\n";
// 写入数据
for (int row = 0; row < model.rowCount(); row++) {
for (int col = 0; col < model.columnCount(); col++) {
stream << model.data(model.index(row, col)).toString();
if (col < model.columnCount() - 1)
stream << ",";
}
stream << "\n";
}
file.close();
}
完整的代码示例:
#include <QSqlTableModel>
#include <QFile>
#include <QTextStream>
void exportToCsv() {
QSqlTableModel model;
model.setTable("your_table_name");
model.setDatabase(QSqlDatabase::database("your_connection_name"));
model.select();
QFile file("output.csv");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream stream(&file);
// 写入表头
for (int i = 0; i < model.columnCount(); i++) {
stream << model.headerData(i, Qt::Horizontal).toString();
if (i < model.columnCount() - 1)
stream << ",";
}
stream << "\n";
// 写入数据
for (int row = 0; row < model.rowCount(); row++) {
for (int col = 0; col < model.columnCount(); col++) {
stream << model.data(model.index(row, col)).toString();
if (col < model.columnCount() - 1)
stream << ",";
}
stream << "\n";
}
file.close();
}
}
这样,遍历QSqlTableModel并导出到.csv文件的功能就实现了。你可以根据需要调用exportToCsv()
函数来导出数据。
领取专属 10元无门槛券
手把手带您无忧上云