要将QTableView中的数据生成为xlsx文件,需要使用Qt的QtXlsxWriter库。下面是一个简单示例代码:
#include <QtWidgets/QApplication>
#include <QtXlsx>
#include <QTableView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建一个QTableView
QTableView tableView;
tableView.setGeometry(100, 100, 500, 300);
tableView.setWindowTitle("Table View");
// 模拟一些表格数据
QStringList headers = {"Name", "Age", "Gender"};
QList<QList<QVariant>> data = {{"John", 25, "Male"},
{"Lucy", 20, "Female"},
{"Tom", 30, "Male"}};
QStandardItemModel model(data.count(), headers.count());
for (int row = 0; row < data.count(); ++row) {
QList<QVariant> rowData = data.at(row);
for (int column = 0; column < rowData.count(); ++column) {
QString value = rowData.at(column).toString();
QStandardItem *item = new QStandardItem(value);
model.setItem(row, column, item);
}
}
model.setHorizontalHeaderLabels(headers);
tableView.setModel(&model);
// 使用QXlsxWriter创建xlsx文件并将数据写入
QString fileName = "example.xlsx";
QXlsx::Document xlsx(fileName);
QXlsx::Format format;
format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);
format.setVerticalAlignment(QXlsx::Format::AlignVCenter);
for (int row = 0; row < model.rowCount(); ++row) {
for (int column = 0; column < model.columnCount(); ++column) {
QString value = model.data(model.index(row, column)).toString();
xlsx.write(row + 1, column + 1, value, format);
}
}
xlsx.save();
tableView.show();
return a.exec();
}
这个示例代码使用QStandardItemModel模拟了一些表格数据,并将它们显示在一个QTableView中。然后,使用QXlsxWriter创建了一个.xlsx文件,并将数据写入该文件中。
请注意,如果要使用QtXlsxWriter库,需要在项目文件.pro中添加以下行:
QT += xlsx
LIBS += -lxlsxwriter