热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql数据导入excel_MYSQL数据导入EXCEL

usingnamespaceExcel;voidCImportExcel::OnBnClickedButtonSelectpath(){TODO:在此添加控件通知处理程序代码CSt

//

using namespace Excel;

void CImportExcel::OnBnClickedButtonSelectpath()

{

// TODO: 在此添加控件通知处理程序代码

CString strTestName,strTmp,strTmpEx;

BOOL bNameValid;

((CComboBox*)GetDlgItem(IDC_COMBO_DataName))->GetWindowText(strTestName);

if (strTestName.IsEmpty())

{

bNameValid=strTmp.LoadString(IDS_TiShi);

ASSERT(bNameValid);

bNameValid=strTmpEx.LoadString(IDS_TestNameNull);

ASSERT(bNameValid);

MessageBox(strTmpEx,strTmp);

return;

}

CFileDialog fileDlg(FALSE,

NULL,

strTestName,

OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

"Excel文件(*.xls)|*.xls||",

NULL,0,TRUE);

if (fileDlg.DoModal()==IDOK)

{

strTmp=fileDlg.GetPathName();

CString strFileExt=fileDlg.GetFileExt();

if (strFileExt.IsEmpty())

{

strTmp+=".xls";

}

CFile file;

if (file.Open(strTmp,CFile::modeCreate)==FALSE)

{

return;

}

file.Close();

if (strTmp.IsEmpty()==FALSE)

{

((CEdit *)GetDlgItem(IDC_EDIT_SavePath))->SetWindowText(strTmp);

((CButton*)GetDlgItem(IDOK))->EnableWindow(TRUE);

}

}

}

BOOL CImportExcel::ImprotDataExcel(CString strSavePath,CString strTestName)

{

if (m_DataTbNames.GetCount()<&#61;0)

{

return FALSE;

}

if (&mysql&#61;&#61;NULL)

{

return FALSE;

}

pProgressCtrl->SetPos(5);

_bstr_t filePath&#61;(_bstr_t)strSavePath;

//CoInitializeEx( 0, COINIT_APARTMENTTHREADED );//这两句语句放在函数外面

//_ApplicationPtr pApp;

WorkbooksPtr pBooks;

_WorkbookPtr pBook;

SheetsPtr pSheets;

_WorksheetPtr pSheet;

RangePtr pRang;

_variant_t varTmp;

MYSQL_RES *m_res;

MYSQL_ROW m_row;

COleVariant vTrue((short)TRUE),vFalse((short)FALSE);

try

{

//pApp.CreateInstance(__uuidof(Excel::Application));

pBooks&#61; pApp->GetWorkbooks();

pBook &#61; pBooks->Add(_variant_t(filePath));

pSheets&#61; pBook->GetWorksheets();

pSheet&#61; pBook->GetActiveSheet();

pSheet->Activate();//支持一个表单

pProgressCtrl->SetPos(10);

int nRowNum&#61;0;

int nTbCount&#61;m_DataTbNames.GetCount();

CString strTbName,strFildName,strColName1,strColName2,strColIndex1,strColIndex2,strCurRowNum,strIndex1,strIndex2,strSql;

CString strValue1,strValue2,strTmp,strTmpValue;

int nPos&#61;80/nTbCount;

for (int ii&#61;0;ii

{

nRowNum&#61;1;

strCurRowNum.Empty();

strColName1.Empty();

strColName2.Empty();

strColIndex1.Empty();

strColIndex2.Empty();

strIndex1.Empty();

strIndex2.Empty();

strFildName.Empty();

strCurRowNum.Format("%d",nRowNum);

strTbName&#61;m_DataTbNames.GetAt(ii);

GetColumnName(strTbName,strFildName,strColName1,strColName2);//动态得到列名和数据库对应的数据值的列名

if (strFildName.IsEmpty()||strColName1.IsEmpty()||strColName2.IsEmpty())

{

break;

}

GetColumnIndex(ii,strColIndex1,strColIndex2);//动态得到该列名相对应的EXCEL表中的列序号

if (ii&#61;&#61;0)

{

pSheet->Range[COleVariant("A1")][vtMissing]->Value2&#61;COleVariant("序号");

}

strIndex1&#43;&#61;strColIndex1;

strIndex1&#43;&#61;strCurRowNum;//(strIndex1类似B1)

strIndex2&#43;&#61;strColIndex2;

strIndex2&#43;&#61;strCurRowNum;//(strIndex1类似C1)

pSheet->Range[COleVariant(strIndex1)][vtMissing]->Value2&#61;COleVariant(strColName1);

pSheet->Range[COleVariant(strIndex2)][vtMissing]->Value2&#61;COleVariant(strColName2);

//数据库获取数据

strSql.Format("select %s, totalTime from %s where testName&#61;&#39;%s&#39;order by totalTime",\

strFildName,strTbName,strTestName);

if (mysql_query(mysql,strSql)!&#61;0)

{

return FALSE;

}

m_res&#61;mysql_store_result(mysql);

while(m_row&#61;mysql_fetch_row(m_res))

{

nRowNum&#43;&#43;;

strCurRowNum.Empty();

strIndex1.Empty();

strIndex2.Empty();

strTmpValue.Empty();

strTmp.Empty();

strCurRowNum.Format("%d",nRowNum);

strIndex1&#43;&#61;strColIndex1;

strIndex1&#43;&#61;strCurRowNum;//(strIndex1类似B1)

strIndex2&#43;&#61;strColIndex2;

strIndex2&#43;&#61;strCurRowNum;//(strIndex1类似C1)

strValue1&#61;m_row[0];//相应值

strValue2&#61;m_row[1];//相应总时间值

strTmp.Format("A%d",nRowNum);//查询序号列是否为空&#xff0c;为空时写值

strTmpValue&#61;pSheet->Range[COleVariant(strTmp)][vtMissing]->Text;

if (strTmpValue.IsEmpty())

{

strTmpValue.Format("%d",nRowNum-1);

pSheet->Range[COleVariant(strTmp)][vtMissing]->Value2&#61;COleVariant(strTmpValue);//先序号值

}

pSheet->Range[COleVariant(strIndex1)][vtMissing]->Value2&#61;COleVariant(strValue2);//先写时间值

pSheet->Range[COleVariant(strIndex2)][vtMissing]->Value2&#61;COleVariant(strValue1);//往后一列写相应值

}

mysql_free_result(m_res);

pProgressCtrl->SetPos(nPos*(ii&#43;1));

}

pBook->SaveCopyAs(COleVariant(filePath));

pBook->put_Saved(0,TRUE);

}

catch (CException* e)

{

}

pApp->Quit();

pProgressCtrl->SetPos(100);

return TRUE;

}



推荐阅读
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • 本文整理了Java中org.gwtbootstrap3.client.ui.Icon.addDomHandler()方法的一些代码示例,展示了Icon.ad ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • github上_idea上传本地项目到github上(图解)
    本文由编程笔记#小编为大家整理,主要介绍了idea上传本地项目到github上(图解)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 标题: ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • jQuery实现简单的动画效果及用法详解
    本文详细介绍了使用jQuery实现简单动画效果的方法,包括显示/隐藏、向上收缩/向下展开、淡入/淡出、自定义动画等。同时提供了具体的用法示例,并解释了参数的含义和使用技巧。通过本文的学习,读者可以掌握如何使用jQuery实现各种动画效果,为网页增添生动和互动性。 ... [详细]
author-avatar
手机用户2502869895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有