写程序读出excel文件内容插入数据库,但是每条记录都被插了两遍,怎么回事呀
代码如下~~
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QAxWidget excel("Excel.Application");
excel.setProperty("Visible", true);
//显示当前窗口
QAxObject * workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)", QString("c:/data/bbb.xls"));
//打开已存在的工作簿C:/data/bbb.xls
QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
//获取活动工作簿
QAxObject * worksheets = workbook->querySubObject("WorkSheets");
//获取所有工作表
if(createConnection())
{
QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
//获取第1个工作表
QAxObject * usedrange = worksheet->querySubObject("UsedRange");
//工作表中的已用区域
QAxObject * rows = usedrange->querySubObject("Rows");
//行
int intRowStart = usedrange->property("Row").toInt();//开始行
int intRows = rows->property("Count").toInt();//行数 QAxObject * range1 = worksheet->querySubObject("Cells (int,int)",4,8);
QAxObject * range2 = worksheet->querySubObject("Cells (int,int)",5,7);
QAxObject * range_c = worksheet->querySubObject("Cells (int,int)",4,22);
QString class_name1 = range1->property("Value").toString();//课程名
QString exam_time1 = range2->property("Value").toString();//时段
QString classroom_c = range_c->property("Value").toString();//教室
QSqlQuery query;
query.exec("create table `"+class_name1+"` (classname varchar(50) not null,exam_time varchar(50) not null,"
"num varchar(10) not null,xueyuan varchar(50) not null,zhuanye varchar(50) not null,"
"class varchar(30) not null,stu_num varchar(30) not null,name varchar(30) not null,"
"class_ID varchar(50) not null,classroom varchar(20) not null)");
for (int i = intRowStart; i < intRowStart + intRows; i++)
{
QAxObject * range3 = worksheet->querySubObject("Cells (int,int)",i,2);
QAxObject * range4 = worksheet->querySubObject("Cells (int,int)",i,5);
QAxObject * range5 = worksheet->querySubObject("Cells (int,int)",i,10);
QAxObject * range6 = worksheet->querySubObject("Cells (int,int)",i,15);
QAxObject * range7 = worksheet->querySubObject("Cells (int,int)",i,20);
QAxObject * range8 = worksheet->querySubObject("Cells (int,int)",i,25);
QAxObject * range9 = worksheet->querySubObject("Cells (int,int)",i,28);
QAxObject * range10 = worksheet->querySubObject("Cells (int,int)",i,22);
int cell3 = range3->property("Value").toInt();
QString cell4 = range4->property("Value").toString();
QString cell5 = range5->property("Value").toString();
QString cell6 = range6->property("Value").toString();
QString cell7 = range7->property("Value").toString();
QString cell8 = range8->property("Value").toString();
QString cell9 = range9->property("Value").toString();
QString classroom1 = range10->property("Value").toString();//教室
if(classroom1 != NULL)
{
classroom_c = classroom1;
}
else
{
if(cell3 > 0 && cell3 < 300)
{
QString cell_3 = QString::number(cell3,10);
QSqlQuery q;
q.exec("insert into `"+class_name1+"`(classname,exam_time,num,xueyuan,zhuanye,class,stu_num,name,class_ID,classroom) "
"values ('"+class_name1+"','"+exam_time1+"','"+cell_3+"','"+cell4+"',"
"'"+cell5+"','"+cell6+"','"+cell7+"','"+cell8+"','"+cell9+"','"+classroom_c+"')");
q.exec(); } }
}
} workbook->dynamicCall("Close (Boolean)", false); excel.dynamicCall("Quit (void)"); delete workbook;
delete workbooks;
delete worksheets; return a.exec();
}
代码如下~~
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QAxWidget excel("Excel.Application");
excel.setProperty("Visible", true);
//显示当前窗口
QAxObject * workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)", QString("c:/data/bbb.xls"));
//打开已存在的工作簿C:/data/bbb.xls
QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
//获取活动工作簿
QAxObject * worksheets = workbook->querySubObject("WorkSheets");
//获取所有工作表
if(createConnection())
{
QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
//获取第1个工作表
QAxObject * usedrange = worksheet->querySubObject("UsedRange");
//工作表中的已用区域
QAxObject * rows = usedrange->querySubObject("Rows");
//行
int intRowStart = usedrange->property("Row").toInt();//开始行
int intRows = rows->property("Count").toInt();//行数 QAxObject * range1 = worksheet->querySubObject("Cells (int,int)",4,8);
QAxObject * range2 = worksheet->querySubObject("Cells (int,int)",5,7);
QAxObject * range_c = worksheet->querySubObject("Cells (int,int)",4,22);
QString class_name1 = range1->property("Value").toString();//课程名
QString exam_time1 = range2->property("Value").toString();//时段
QString classroom_c = range_c->property("Value").toString();//教室
QSqlQuery query;
query.exec("create table `"+class_name1+"` (classname varchar(50) not null,exam_time varchar(50) not null,"
"num varchar(10) not null,xueyuan varchar(50) not null,zhuanye varchar(50) not null,"
"class varchar(30) not null,stu_num varchar(30) not null,name varchar(30) not null,"
"class_ID varchar(50) not null,classroom varchar(20) not null)");
for (int i = intRowStart; i < intRowStart + intRows; i++)
{
QAxObject * range3 = worksheet->querySubObject("Cells (int,int)",i,2);
QAxObject * range4 = worksheet->querySubObject("Cells (int,int)",i,5);
QAxObject * range5 = worksheet->querySubObject("Cells (int,int)",i,10);
QAxObject * range6 = worksheet->querySubObject("Cells (int,int)",i,15);
QAxObject * range7 = worksheet->querySubObject("Cells (int,int)",i,20);
QAxObject * range8 = worksheet->querySubObject("Cells (int,int)",i,25);
QAxObject * range9 = worksheet->querySubObject("Cells (int,int)",i,28);
QAxObject * range10 = worksheet->querySubObject("Cells (int,int)",i,22);
int cell3 = range3->property("Value").toInt();
QString cell4 = range4->property("Value").toString();
QString cell5 = range5->property("Value").toString();
QString cell6 = range6->property("Value").toString();
QString cell7 = range7->property("Value").toString();
QString cell8 = range8->property("Value").toString();
QString cell9 = range9->property("Value").toString();
QString classroom1 = range10->property("Value").toString();//教室
if(classroom1 != NULL)
{
classroom_c = classroom1;
}
else
{
if(cell3 > 0 && cell3 < 300)
{
QString cell_3 = QString::number(cell3,10);
QSqlQuery q;
q.exec("insert into `"+class_name1+"`(classname,exam_time,num,xueyuan,zhuanye,class,stu_num,name,class_ID,classroom) "
"values ('"+class_name1+"','"+exam_time1+"','"+cell_3+"','"+cell4+"',"
"'"+cell5+"','"+cell6+"','"+cell7+"','"+cell8+"','"+cell9+"','"+classroom_c+"')");
q.exec(); } }
}
} workbook->dynamicCall("Close (Boolean)", false); excel.dynamicCall("Quit (void)"); delete workbook;
delete workbooks;
delete worksheets; return a.exec();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货