當前位置:首頁 » 操作系統 » qt資料庫excel

qt資料庫excel

發布時間: 2022-03-01 15:50:05

Ⅰ 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;
}
}
}

熱點內容
vb軟體加密 發布:2024-11-15 21:17:23 瀏覽:595
本地ip可以搭伺服器嗎 發布:2024-11-15 21:04:27 瀏覽:163
阿里巴巴python 發布:2024-11-15 20:56:25 瀏覽:783
博圖腳本編輯 發布:2024-11-15 20:41:06 瀏覽:313
帶密碼的箱子鑰匙在哪裡 發布:2024-11-15 20:40:12 瀏覽:236
兩個次梁相交怎麼配置 發布:2024-11-15 20:27:35 瀏覽:374
android關機實現 發布:2024-11-15 20:26:42 瀏覽:57
木糠壓縮原理 發布:2024-11-15 20:22:53 瀏覽:654
編譯原理難以理解的問題 發布:2024-11-15 20:11:25 瀏覽:131
安卓9是什麼水平 發布:2024-11-15 20:06:57 瀏覽:185