写代码需要将excel中的文件导入到数据库中

网上找到以为大神写的,但是当初没有保存,也没有找到

我几乎是原分不动拔下来的,希望大神莫怪

void AddDialog::readExcel(QString url)
{
QAxObject excel("Excel.Application");
excel.setProperty("Visible",true);
QAxObject *work_books = excel.querySubObject("WorkBooks");
work_books->dynamicCall("Open (const QString&)",QString(url));
QVariant title_value = excel.property("Caption"); //获取标题信息
// qDebug()<<"读取Excel标题为:"<<title_value;
QAxObject *work_book = excel.querySubObject("ActiveWorkBook");
QAxObject *work_sheets = work_book->querySubObject("Sheets"); //Sheets也可以换用WorkSheets
int sheet_count = work_sheets->property("Count").toInt(); //获取工作表数目
// qDebug()<<"当前工作表数目为:"<<sheet_count;
exceltip = new Excel(this);
for(int k=1;k<=sheet_count;k++)
{
QAxObject *work_sheet = work_book->querySubObject("Sheets(int)",k); //Sheets(int)也可以用Worksheets(int)
QString work_sheet_name = work_sheet->property("Name").toString(); //获取工作表名称
QString message = QString("Sheet")+QString::number(k,10)+QString("name");
// qDebug()<<message<<work_sheet_name;
if(sheet_count>0)
{
QAxObject *work_sheet = work_book->querySubObject("Sheets(int)",k);
QAxObject *used_range = work_sheet->querySubObject("UsedRange");
QAxObject *rows = used_range->querySubObject("Rows");
// QAxObject *columns = used_range->querySubObject("Columns");
int row_start = used_range->property("Row").toInt(); //获取起始行
int columns_start = used_range->property("Column").toInt(); //获取起始列
int row_count = rows->property("Count").toInt(); //获取行数
// int column_count = columns->property("Count").toInt(); //获取列数
exceltip->show();
ui->pushButton_Cancle->setEnabled(false);
ui->pushButton_close->setEnabled(false);
ui->pushButton_save->setEnabled(false);
ui->pushButton_Excel->setEnabled(false);
ui->pushButton_update->setEnabled(false);
exceltip->setcount(row_count-1,work_sheet_name);
for(int i=row_start+1;i<=row_count;i++)
{
/***********************************
* 数据解析函数函数
* 将Excel中的数据分条取出
* 的别值得注意的是
* 由于数据主码是一当前时间为主码
* 所以要调用延时函数延时1秒
* 防止数据主码相同为数据加载失败
****************************************************************************************************************/
QAxObject *cell[13];
QVariant cell_value[13]; cell[0] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+0);
cell_value[0] = cell[0]->property("Value"); //获取单元格内容 cell[1] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+1);
cell_value[1] = cell[1]->property("Value"); cell[2] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+2);
cell_value[2] = cell[2]->property("Value"); cell[3] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+3);
cell_value[3] = cell[3]->property("Value"); cell[4] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+4);
cell_value[4] = cell[4]->property("Value"); cell[5] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+5);
cell_value[5] = cell[5]->property("Value"); cell[6] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+6);
cell_value[6] = cell[6]->property("Value"); cell[7] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+7);
cell_value[7] = cell[7]->property("Value"); cell[8] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+8);
cell_value[8] = cell[8]->property("Value"); cell[9] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+9);
cell_value[9] = cell[9]->property("Value"); cell[10] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+10);
cell_value[10] = cell[10]->property("Value"); cell[11] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+11);
cell_value[11] = cell[11]->property("Value"); cell[12] = work_sheet->querySubObject("Cells(int,int)",i,columns_start+12);
cell_value[12] = cell[12]->property("Value"); datasave->CRETM = gettimetss();
datasave->pro_name = cell_value[0].toString();
datasave->PSTM = cell_value[1].toString();
datasave->PETM = cell_value[2].toString();
datasave->Par_name = cell_value[3].toString();
datasave->PARSTM = cell_value[4].toString();
datasave->PARETM = cell_value[5].toString();
datasave->Sta_name = cell_value[6].toString();
datasave->STASTM = cell_value[7].toString();
datasave->STAETM = cell_value[8].toString();
datasave->INFOR = cell_value[9].toString();
datasave->DELTM = cell_value[10].toString();
datasave->REASION = cell_value[11].toString();
datasave->FINTM = cell_value[12].toString();
QString sql_insert = "insert into project values('";
sql_insert +=datasave->pro_name;
sql_insert +="','";
sql_insert +=datasave->PSTM;
sql_insert +="','";
sql_insert +=datasave->PETM;
sql_insert +="','";
sql_insert +=datasave->Par_name;
sql_insert +="','";
sql_insert +=datasave->PARSTM;
sql_insert +="','";
sql_insert +=datasave->PARETM;
sql_insert +="','";
sql_insert +=datasave->Sta_name;
sql_insert +="','";
sql_insert +=datasave->STASTM;
sql_insert +="','";
sql_insert +=datasave->STAETM;
sql_insert +="','";
sql_insert +=datasave->INFOR;
sql_insert +="','";
sql_insert +=datasave->FINTM;
sql_insert +="','";
sql_insert +=datasave->DELTM;
sql_insert +="','";
sql_insert +=datasave->REASION;
sql_insert +="','";
sql_insert +=datasave->CRETM;
sql_insert +="')";
QSqlQuery insert_data(*projectdb);
insert_data.exec(sql_insert);
// qDebug()<<sql_insert;
emit sys_data();
exceltip->setnumber(i);
delaymsec(10);
/****************************************************************************************************************/
}
}
}
exceltip->setfinish(true);
if(exceltip->exec() == QDialog::Accepted)
{
ui->pushButton_Cancle->setEnabled(true);
ui->pushButton_close->setEnabled(true);
ui->pushButton_save->setEnabled(true);
ui->pushButton_Excel->setEnabled(true);
ui->pushButton_update->setEnabled(true);
getname();
}
} /*******************************************************************************/ void AddDialog::on_pushButton_Excel_clicked() //打开一个Excel文件,完了要调用Excel解析函数
{
QString filename = QFileDialog::getOpenFileName(this);
if(!filename.isEmpty())
{
readExcel(filename);
}
}
//自定义延时函数 //无阻塞延时函数
void AddDialog::delaymsec(int msec)
{
QTime dieTime = QTime::currentTime().addMSecs(msec);
while (QTime::currentTime()<dieTime)
{
QCoreApplication::processEvents(QEventLoop::AllEvents,100);
}
}

Qt 解析EXcel文件的更多相关文章

  1. Java:JXL解析Excel文件

    项目中,有需求要使用JXL解析Excel文件. 解析Excel文件 我们先要将文件转化为数据流inputStream. 当inputStream很大的时候 会造成Java虚拟器内存不够 抛出内存溢出 ...

  2. c++ 读取并解析excel文件方法

    用Cocos开发模型特效工具编辑器,跨Mac和windows,当中有个需求是读取并解析excel文件,但网上的查找的例子几乎都只能是在windows下面使用,再或者是命令行脚本之类的.于是,自己写了一 ...

  3. 解析Excel文件并把数据存入数据库

    前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...

  4. Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

    JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传 ...

  5. Jxl创建Excel文件和解析Excel文件

    import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; im ...

  6. nodejs 解析excel文件

    app.js: var FileUpload = require('express-fileupload') app.use(FileUpload()); service.js: npm instal ...

  7. vue下载和上传excle数据文件,解析excel文件数据并存在数据库中

    下载: VUE: window.open("xxxx/downloadOldTaskDataFile.do_", "_blank"); JAVA: /** * ...

  8. 【Java】使用Apache POI生成和解析Excel文件

    概述 Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,分别有jxl和poi,2种方式. HSSF is the POI Project's pure ...

  9. poi解析Excel文件版本问题

    poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xls)的文件 XSSFWorkbook格式用来解析Excel2007(xlsx)的文件 如果用HSSF ...

随机推荐

  1. 20145223 杨梦云 《网络对抗》 MSF基础应用

    20145223 杨梦云 <网路对抗> MSF基础应用 1.实验后回答问题:用自己的话解释什么是exploit,payload,encode (1)百度百科上说Exploit 的英文意思就 ...

  2. C# Path类 FileStream(文件流) 与 File(文件) 读取的区别

    1.采用文件流读取数据是一点一点从文件中读取数据对内存的压力相对较小;而采用文件读取数据是一下全部读取过来对内存造成的压力相对较大 2.File读取: string str = @"E:\Q ...

  3. linux c 获取当前时间 毫秒级的 unix网络编程

    #include <time.h> #inlcude <sys/time.h> char *gf_time(void) /* get the time */{ struct t ...

  4. Android 复制 粘贴 剪贴板的使用 ClipboardManager

    Copy and Paste 版本:Android 4.0 r1  快速查看 用于复制粘贴数据的基于剪贴板的框架. 同时支持简单和复杂的数据,包括文本串.复杂的数据结构.文本和二进制流数据.程序 as ...

  5. HDU 2031 进制转换(10进制转R进制)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2031 进制转换 Time Limit: 2000/1000 MS (Java/Others)    M ...

  6. UITableViewCell在重用ID时为何加上Static关键字

    UITableViewCell在重用ID时为何加上Static关键字 先回顾一下iOS各种变量作用域和生命周期相关知识: 1.方法中临时变量存储在栈区,出了该方法,临时变量会被自动销毁.但是如果给方法 ...

  7. HTML5——前端预处理技术(Less、Sass、CoffeeScript)

    一.Less 1.1.概要 Less是一种动态样式语言,Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. Less 将 C ...

  8. Django全面讲解(2/2)

    前戏 Django是Python语言编写的一个全栈式Web框架(其他的还有Tornado,Flask),可帮助我们快速编写一个具有数据库功能,增删改查.后台管理等功能的网站,若不考虑很高的执行速度,去 ...

  9. asp.net mvc5 step by step(二)——Data Annotations(data 注释)

       以下使用在Entity Framework Code First Entity Framework Code First 利用一种被称为约定(Conventions)优于配置(Configura ...

  10. 使用第三方库iOS-ECharts做柱状图的心得

    最近的项目里面用到了饼图和条形统计图,饼图用的是PNChart来做的,这个库感觉用起来也简单,但是做条形统计图的时候就特别蛋疼(不知道是不是我姿势没对),反正就是各种问题,然后就想到换一种框架,最后选 ...