// 创建数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); // 创建一个 SQLite 数据库连接
db.setDatabaseName("myDatabase.db"); // 设置数据库文件名
if (!db.open()) { // 打开数据库连接
qDebug() << "Failed to connect to database" << db.lastError().text();
return 1;
}
// 打开 Excel 文件
xlsWorkBook* pWorkbook = xls_open("myData.xls", "UTF-8"); // 打开 Excel 文件
if (!pWorkbook) { // 判断是否打开成功
qDebug() << "Failed to open Excel file";
return 1;
}
// 读取数据
xlsWorkSheet* pWorksheet = xls_getWorkSheet(pWorkbook, 0); // 获取第一个工作表
int rowCount = xls_getRowCount(pWorksheet); // 获取工作表的行数
int colCount = xls_getColCount(pWorksheet); // 获取工作表的列数
QList<QList<QVariant>> data; // 定义一个二维列表用于存放数据
for (int row = 0; row < rowCount; row++) { // 遍历工作表的每一行
QList<QVariant> rowData; // 定义一个列表用于存放当前行的数据
for (int col = 0; col < colCount; col++) { // 遍历当前行的每一列
xlsCell* pCell = xls_cell(pWorksheet, row, col); // 获取当前单元格
QVariant cellValue; // 定义一个 QVariant 类型的变量用于存放单元格的值
if (pCell) { // 如果单元格存在
if (pCell->str) { // 如果单元格中是字符串
cellValue = QString::fromUtf8((const char*)pCell->str); // 将字符串转换成 QString 类型
} else { // 如果单元格中不是字符串
cellValue = pCell->d; // 直接获取数值
}
}
rowData.append(cellValue); // 将单元格的值加入当前行的列表中
}
data.append(rowData); // 将当前行的列表加入总的二维列表中
}
// 导入数据
QSqlQuery query; // 创建一个 QSqlQuery 类型的对象,用于执行 SQL 语句
query.prepare("INSERT INTO myTable (id, name, age) VALUES (?, ?, ?)"); // 准备插入语句
for (const auto& rowData : data) { // 遍历二维列表中的每一行
int id = rowData.at(0).toInt(); // 获取 id 的值
QString name = rowData.at(1).toString(); // 获取 name 的值
int age = rowData.at(2).toInt(); // 获取 age 的值
query.addBindValue(id); // 将 id 的值绑定到查询语句中
query.addBindValue(name); // 将 name 的值绑定到查询语句中
query.addBindValue(age); // 将 age 的值绑定到查询语句中
query.exec();
在QT表中读数据到数据库
最新推荐文章于 2024-05-14 12:08:22 发布