qt数据库excel
Ⅰ Qt实现一个表格,具有excel功能
使用QAxwidget,导入excel控件,然后窗口中的内容就是excel,你什么功能都不需要开发,直接用就是了。最后,把QAxwidget放入Qgraphicsscene中即可。
Ⅱ 关于qt与excel
QsqlDatabase db = QSqlDatabase::addDatabase("QODBC");
if(!db.isValid())
{
qDebug() << "export2Excel failed: QODBC not supported.";
return ;
}
QString xlsFile = "D:/test.xls";
QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};Readonly=0;DriverId=790;DBQ=%1").arg(xlsFile);
db.setDatabaseName(dsn);
if(!db.open())
{
//错误处理
return;
}
QString queryystr = "select * from [sheet1$]";
SqlTableModel*excelTableModel = new SqlTableModel(this, db);
QString tableName = "[sheet1$]";
excelTableModel->setTable(tableName);
QSqlQuery querry(queryystr, db);
excelTableModel->setQuery(querry);
excelTableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
excelTableModel->setSort(0, Qt::AscendingOrder);
bool ok = excelTableModel->select(); //选取整个表的所有行
ui.tableView_2->setModel(excelTableModel);
int i = 0;
foreach(QString heardName, heardList)
{
excelTableModel->setHeaderData(i, Qt::Horizontal, heardName);
i++;
}
int sqlTableCount = m_sqlTableModel->rowCount();
int excelTableCount = excelTableModel->rowCount();
QList<QSqlRecord> tmprecord;
for (int row = 0; row < excelTableCount; row++ )
{
QSqlRecord excelRecord = excelTableModel->record(row);
tmprecord << excelRecord;
}
db.close();
bool open = m_dba.open();
foreach(QSqlRecord record, tmprecord)
{
bool ok = m_sqlTableModel->insertRow(sqlTableCount); //添加一行
for (int k = 0; k<5;k++)
{
if (k == 0)
{
bool suc= m_sqlTableModel->setData(m_sqlTableModel->index(sqlTableCount,k),record.value(k), Qt::CheckStateRole);
}
bool suc= m_sqlTableModel->setData(m_sqlTableModel->index(sqlTableCount,k),record.value(k), Qt::EditRole);
}
sqlTableCount++;
}
AlterButtonClicked();
initWindow(TEACHERMANAGECLICKED);
AlterButtonClicked()
{
m_sqlTableModel->database().transaction(); //开始事务操作
if (m_sqlTableModel->submitAll())
{
m_sqlTableModel->database().commit(); //提交
}
else
{
m_sqlTableModel->database().rollback(); //回滚
QMessageBox::warning(this, tr("Model"), tr("数据库错误: %1").arg(m_sqlTableModel->lastError().text()));
}
}
initWindow(int index)
{
int i = 0;
heardList.clear();
if (index == STUDENTMANAGECLICKED)
{
heardList << "选择" << "编号" << "姓名" << "性别" << "班级" << "备注";
m_sqlTableModel->setTable("\"StudentInfo\"");
m_sqlTableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
m_sqlTableModel->setSort(0, Qt::AscendingOrder);
m_sqlTableModel->select(); //选取整个表的所有行
ui.tableView_2->setModel(m_sqlTableModel);
foreach(QString heardName, heardList)
{
m_sqlTableModel->setHeaderData(i, Qt::Horizontal, heardName);
i++;
}
}
else if (index == TEACHERMANAGECLICKED)
{
heardList << "选择" << "用户名" << "姓名" << "性别" << "角色" << "备注";
m_sqlTableModel->setTable("\"TeacherInfo\"");
m_sqlTableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
m_sqlTableModel->setSort(0, Qt::AscendingOrder);
bool ok1 = m_sqlTableModel->select(); //选取整个表的所有行
ui.tableView_2->setModel(m_sqlTableModel);
foreach(QString heardName, heardList)
{
m_sqlTableModel->setHeaderData(i, Qt::Horizontal, heardName);
i++;
}
}
//m_sqlTableModel->insertColumn(0);
ui.tableView_2->resizeColumnsToContents();
}
Ⅲ 如何用Qt打开excel并获取其中的内容
1.如下,是下载的一个Excel VBA参考手册,内容不算太全!
2.Excel读取
为了便于测试,假设已存在一个excel文件,操作内容已经被红色标记出来。如下所示:
主要读取内容:
标题
工作表数目
工作表名称
起始行
起始列
行数
列数
单元格内容
代码如下:
QAxObject excel("Excel.Application");
excel.setProperty("Visible", true);
QAxObject *work_books = excel.querySubObject("WorkBooks");
work_books->dynamicCall("Open (const QString&)", QString("E:/test.xlsx"));
QVariant title_value = excel.property("Caption"); //获取标题
qDebug()<<QString("excel title : ")<<title_value;
QAxObject *work_book = excel.querySubObject("ActiveWorkBook");
QAxObject *work_sheets = work_book->querySubObject("Sheets"); //Sheets也可换用WorkSheets
Ⅳ qt中怎样将表格中数据导出为excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能。之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件。在使用了QtSql模块后,我很容易的将这个类改写应用在Qt程序中。类的名字叫“ExportExcelObject”。使用起来很简单:
[cpp] view plain
// 1. declare an object
// – fileName Excel 文件路径
// – sheetName Excel 工作表(sheet)名称
// – tableView 需要导出的QTableView指针
ExportExcelObject obj(fileName, sheetName, tableView);
// 2. define fields (columns) to the Excel sheet file
// – 第1个参数是QTableView的列
// – 第2个参数是对应该列的Excel sheet中的列名
// – 第3个参数是该列的类型,可以使用char(x) (x最大255),int,datetime, 等
obj.addField(1, tr("name"), "char(60)");
obj.addField(2, tr("ID"), "int");
obj.addField(3, tr("time"), " datetime ");
// 3. 该类有特定的SIGNAL用于连接一个progress控件,可以显示导出进度
connect(&obj, SIGNAL(exportedRowCount(int)), progressBar, SLOT(setValue(int)));
// 4. do the work
int retVal = obj.export2Excel();
if(retVal > 0)
{//done
}
else
{//something wrong
}
那么这个类是怎样实现的呢?
1. 将Excel文件当成是一个数据库
使用MS的ODBC或ADO都可以将Excel文件当做一个数据库,那么我们只需要使用下面这个DSN连接串去创建并连接至该Excel文件:
[cpp] view plain
QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN=''; FIRSTROWHASNAMES=1;;CREATE_DB=/"%1/";DBQ=%2").
arg(excelFilePath).arg(excelFilePath);
2. 将Excel的工作表(sheet)当成是一个数据库表
可以使用SQL语句“CREATE TABLE” 去创建一个工作表。
3. 向表中插入数据
使用SQL的“INSERT”语句插入数据。
4. Unicode支持
是的,列名和数据都支持Unicode。
Ⅳ 把excel表导入到qt的数据库中
有一个类,你网络找一下把,我用过一次,我也是网络找到的,我那个是读写excel的,你只需要把他读出来格式输入到数据库就好了,具体我找不到,我现在的这个是只能往excel中存了,被我裁剪了,不好意思,没法给你。你网络好好找找,公司屏蔽了好多网站,我暂时没法帮你找
Ⅵ 如何用Qt读写excel的数据
QAxWidget excel("Excel.Application");
1) 显示当前窗口:
excel.setProperty("Visible", true);
2) 更改 Excel 标题栏:
excel.setProperty("Caption", "Invoke Microsoft Excel");
3) 添加新工作簿:
QAxObject * workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Add");
4) 打开已存在的工作簿:
workbooks->dynamicCall("Open (const QString&)", QString("c:/test.xls"));
5) 获取活动工作簿:
QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
6) 获取所有的工作表:
QAxObject * worksheets = workbook->querySubObject("WorkSheets");
7) 获取工作表数量:
int intCount = worksheets->property("Count").toInt();
8) 获取第一个工作表:
QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
9) 获取cell的值:
QAxObject * range = worksheet->querySubObject("Cells(int,int)", 1, 1 );
Ⅶ 怎么用Qt读写excel的数据
QAxWidget excel("Excel.Application"); 1) 显示当前窗口: excel.setProperty("Visible", true); 2) 更改 Excel 标题栏: excel.setProperty("Caption", "Invoke Microsoft Excel");
Ⅷ QT 如何读取大数据量的Excel文件
1.
貌似Excel最多只有1048576行,你这150万行我不知道是怎么放到一个表里面的。
2.
数据100多玩行你可以将数据存放在Access或者其他的数据库中或许会比较好一点。
Ⅸ Qt C++库怎么读取Excel中第一列数据
QStringList referList;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + dir.filePath("test.xlsx"));
if(db.open())
{
QSqlQuery query("select * from [Sheet1$A:A]",db); // Select range, place A1:B5 after $
while (query.next())
{
QString dataStr= query.value(0).toString();
if(dataStr != "0")
{
referList << dataStr;
}
}
}