QT使用ODBC连接excel读取中文内容的解决方案
QT通过ODBC连接excel读取中文会出乱码或空白,这是QT本身的一个小bug。
通过调用QSqlQueryModel的方式可以读取中文。无需重构qsql_odbc.cpp中的qGetStringData函数。
QStringList excelFields;
for(int i=0;i<lw_SelSheetField->count();i++){
QString field=lw_SelSheetField->item(i)->text();
excelFields.append(field);
}
QStringList fields;
for(int i=0;i<lw_SelTableField->count();i++){
fields.append(lw_SelTableField->item(i)->text());
}
QString sheet="["+lw_SelSheet->item(0)->text()+"$]";
QString str=QString("select %1 from %2").arg(excelFields.join(",")).arg(sheet);
mDBconn->odbcExcel(le_FilePath->text());
mDBconn->execODBC(str);
QStringList importValues;
for(int i=0;i<mDBconn->qryModel.rowCount();i++){
for(int j=0;j<mDBconn->qryModel.columnCount();j++){
QString value="'"+mDBconn->qryModel.record(i).value(j).toString()+"'";
importValues.append(value);
}
mModel->insertRecData(le_DBTable->text(),fields.join(","),importValues.join(","));
importValues.clear();
}