使用Qt從excel讀取資料至資料庫
一、前言
本文介紹了一種在Qt平臺將excel表格的資料讀取至資料庫QSQLite的方法。思路為:先將excel表格轉為csv檔案,若原表格中存在著中文,還需將csv的編碼格式轉為UTF-8,接著由QFile開啟該csv檔案,將每一行的資料讀出,並寫入建立的資料庫表格。
二、將excel表格轉為csv檔案
首先需要將儲存了需要讀取至資料庫的excel表格儲存為csv檔案,如下為例項excel表格,直接另存為csv檔案。這裡excel儲存的是身份證前6位對應的地區名。
由於excel中存在中文,故需將編碼格式改為UTF-8,用記事本開啟csv檔案,然後在檔案->另存為,設定如下,另存為sfzqjw_UTF8.csv檔案
三、Qt讀取csv中資料並儲存至新建資料庫的表中
<span style="font-size:18px;">//connection.h #ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlQuery> #include <QFile> #include <iostream> #include <QTextStream> #include <QDebug> static bool createConnection() { //讀取csv資料到資料表 QFile file("E:/PracticeOfQt/Id_recognition/sfzqjw_UTF8.csv"); //開啟csv檔案 if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { std::cerr << "Cannot open file for reading: " << qPrintable(file.errorString()) << std::endl; return false; } //將csv_utf8轉為資料庫中的表District儲存 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("mydb.db"); if(!db.open()) { QMessageBox::critical(0 , "Can not open database", "Unable to establish a database connection.",QMessageBox::Cancel); std::cerr<<"stop!"; return false; } QSqlQuery query; //預設開啟 query.exec("create table District(id int primary key, province varchar(25)," "city varchar(25),county varchar(25))"); QStringList list; list.clear(); QTextStream in(&file); //QTextStream讀取資料 int idNumber; while(!in.atEnd()) { QString fileLine = in.readLine(); //從第一行讀取至下一行 list = fileLine.split(",", QString::SkipEmptyParts); idNumber = list.at(4).toInt(); query.prepare("INSERT INTO District (id, province,city,county) VALUES (:idVal,:Pro,:City,:County)"); //準備執行SQL查詢 query.bindValue(":idVal", idNumber); //繫結要插入的值 query.bindValue(":Pro", list.at(1)); query.bindValue(":City", list.at(2)); query.bindValue(":County", list.at(3)); query.exec(); } query.clear(); db.close(); return true; }</span>
四.在main函式中由SQL條件查詢查詢資料庫中對應的地區
Main函式首先運行了connection.h中createConnection()函式,讀取csv中資料並儲存至新建資料庫的表中,接著開啟已建立的資料庫mydb.db,由條件查詢查詢id對應的地區,由qDebug()輸出。<span style="font-size:18px;">//main.cpp #include "connection.h" #include <QApplication> #include <QDebug> #include <QVariant> #include <QSqlDatabase> int main(int argc, char *argv[]) { QApplication a(argc, argv); if(!createConnection()) { std::cerr<<"Can not create connection"; return -1; } QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("mydb.db"); if(!db.open()) { QMessageBox::warning(NULL,QObject::tr("初始化資料庫"),QObject::tr("資料庫檔案開啟故障!")); } QSqlQuery query(db); int queryId = 441223; //要查詢的身份證前6位,儲存至變數 query.prepare("select * from District WHERE id ==? "); //id號碼唯一的 query.addBindValue(queryId); //query的繫結機制繫結變數 query.exec(); QString place = ""; while(query.next()) { for(int i = 1; i < 4 ;++i) place += query.value(i).toString(); } qDebug()<<"編號為"<<queryId<<"的發證地為"<<place; db.close(); //關閉資料庫 return a.exec(); }</span>
五、執行結果
Main函式中設定了查詢編號441223對應的身份證所在市縣,qDebug()輸出結果如下:
相關推薦
使用Qt從excel讀取資料至資料庫
一、前言 本文介紹了一種在Qt平臺將excel表格的資料讀取至資料庫QSQLite的方法。思路為:先將excel表格轉為csv檔案,若原表格中存在著中文,還需將csv的編碼格式轉為UTF-8,接著由QFile開啟該csv檔案,將每一行的資料讀出,並寫入建立的資料庫表格。
pandas從excel讀取資料處理的注意事項
##excel中支援的資料型別較pandas多的多 因為從excel讀取的資料型別很多預設是object,資料處理前建議轉換成str等。pandas中當多列同為object時,實際資料不相同。 如merge時 ggg=pd.merge(cs,c,how="inner",lef
java後端伺服器讀取excel將資料匯入資料庫
使用的是easypoi,官網文件:http://easypoi.mydoc.io/ 1 /** 2 * 匯入Excel檔案 3 */ 4 @PostMapping("/importTeacher") 5 @ResponseBody 6 publi
用java實現從txt文字檔案批量匯入資料至資料庫
今天同事讓我準備一個專案的測試資料,要向一個表中插入上千條記錄,並且保證每條記錄內容不同,如果用手工一條一條插入肯定是不可能,也不會有哪個SB去做這樣的事,我最開始想到了用迴圈,但要求插入的記錄內容不能相同,用迴圈實現比較麻煩,於是我想到了將記錄從文字檔案匯入至資料庫(其實
SpringCloud之實現上傳Excel檔案,初始化匯入資料至資料庫
1、頁面程式碼如下,彈出窗是用的layer: <input type="button" class="btn_default" style="width: 100px;" onclick="investigation();" value="匯入心理諮詢"/>
一個簡單的從txt檔案中讀取資料插入資料庫
一: 首先我們應該先·建一個Dynamic web project 工程。 二: 定義一個讀檔案操作 package com.what.files; 在這裡我們要用到用於讀取本地檔案中的位元組資料的FileInputStream,FileInputStream繼承了Inpu
3月28日 【從EXCEL讀取輸入數據庫】
conn base execute xls mit 數據 遇到 into pass #從excel讀取數據寫入mysqldef excel_to_mysql(filename): ip = ‘133.0.186.3‘ port = 11521 SID =
tensorflow--從檔案讀取資料
讀取資料-csv tensorflow讀取資料流程 構造檔案佇列 讀取佇列內容 reader = tf.TextLineReader() 解析成一個樣本資料 example, label = tf.decode_csv(value, record_defaults
jQueryAjax++servlet+json實現頁面載入時從後臺讀取資料
在eclipse中新建一個專案,我起名為Demo 新建一個html檔案,在其中引入外部jQuery和自定義的js檔案 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <sc
Kafka——Kafka消費者(從Kafka讀取資料)
KafkaConsumer概念 消費者和消費者群組 假設我們有一個應用程式需要從一個Kafka 主題讀取訊息並驗證這些訊息,然後再把它們儲存起來。應用程式需要建立一個消費者物件,訂閱主題並開始接收訊息,然後驗證訊息井儲存結果。過了一陣子,生產者往主題寫入訊息的速度超過了應用程式驗證資料的
Spring-Boot實現Excel表資料匯入資料庫
首先說一下用的工具:jdk8,mysql,mybatis,postman測試, 這次主要是實現歷史學生資訊匯入功能,要求只是提示錯誤資訊,將沒錯的匯入; 好了,貼程式碼 pom匯入依賴,貌似這個poi工具類不向下相容 <dependency> <grou
spark從mysql讀取資料(redis/mongdb/hbase等類似,換成各自RDD即可)
package com.ws.jdbc import java.sql.DriverManager import org.apache.spark.rdd.JdbcRDD import org.apache.spark.{SparkConf, SparkCont
Spark---WC---Spark從外部讀取資料之textFile
測試資料 hello spark hello hadoop csdn hadoop csdn csdn hello world 結果 (spark,1) (hadoop,2) (csdn,3) (hello,3) (world,1) import org.
Kafka消費者——從 Kafka讀取資料
應用程式使用 KafkaConsumer向 Kafka 訂閱主題,並從訂閱的主題上接收訊息 。 從 Kafka 讀取資料不同於從其他悄息系統讀取資料,它涉及一些獨特的概念和想法。如果不先理解 這些概念,就難以理解如何使用消費者 API。所以我們接下來先解釋這些重要的概念,然
從GPU讀取資料到系統記憶體的三種方式
方法一:glReadPixels 首先建立一個fbo,繫結fbo後,attach上需要操作的texture,再進行讀取。 if(fbo == 0) { glGenFramebuffers(1, &fbo); } glBindFramebuffer(GL_F
一個小例子集合xlrd,matplotlib,numpy,scipy使用方法(從Excel匯入資料)
最近因為一篇論文的原因,要從Excel中取得部分資料平作圖,但是得到的圖都是點陣圖,不是太好插入到論文中,因此,決定使用Python畫圖來解決此問題(不使用MATLAB的原因在於它畫出的圖是在是不好看呀) 首先使用的庫是xlrd庫,此庫的作用是從讀取Exc
利用navicat匯入excel表資料到資料庫
注意,表頭為欄位名,,必須資料庫中表欄位名一一對應 第二步:檔案另存為CSV格式 第三步:notepad++開啟儲存的csv檔案選擇編碼轉為UTF-8無BOM編碼格式 一直下一步,直到選擇目標表,可以新建表,也可以手動選擇目標表
Jquery載入時從後臺讀取資料繫結到dropdownList
$(document).ready(function () { loadSchools(); }); function loadSchools() { var url = "@Url.Action("GetSchools")";
C# Excel匯入資料到資料庫
//專案中用到的一個小例子,拿出來和大家分享 ,需要引用 using System.IO; using System.Data.OleDb; /// <summary> /// Excel資料匯入Datable /// </summ
flume從本地讀取資料錄入到hdfs檔案系統
配置檔案 agent.sources = origin agent.channels = memorychannel agent.sinks = target agent.sources.origin.type = TAILDIR agent.source