CString GetExcelDriver()
{
char szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut;
char *pszBuf = szBuf;
CString sDriver;
// 获取已安装驱动的名称(涵数在odbcinst.h里)
if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
return "";
// 检索已安装的驱动是否有Excel...
do
{
if (strstr(pszBuf, "Excel") != 0)
{
//发现 !
sDriver = CString(pszBuf);
break;
}
pszBuf = strchr(pszBuf, '\0') + 1;
}
while (pszBuf[1] != '\0');
return sDriver;
}
BOOL MakeSurePathExists( CString &Path,
bool FilenameIncluded)
{
int Pos=0;
while((Pos=Path.Find('\\',Pos+1))!=-1)
CreateDirectory(Path.Left(Pos),NULL);
if(!FilenameIncluded)
CreateDirectory(Path,NULL);
// return ((!FilenameIncluded)?!_access(Path,0):
// !_access(Path.Left(Path.ReverseFind('\\')),0));
return !_access(Path,0);
}
BOOL GetDefaultXlsFileName(CString& sExcelFile)
{
///默认文件名:yyyymmddhhmmss.xls
CString timeStr;
CTime day;
day=CTime::GetCurrentTime();
int filenameday,filenamemonth,filenameyear,filehour,filemin,filesec;
filenameday=day.GetDay();//dd
filenamemonth=day.GetMonth();//mm月份
filenameyear=day.GetYear();//yyyy
filehour=day.GetHour();//hh
filemin=day.GetMinute();//mm分钟
filesec=day.GetSecond();//ss
timeStr.Format("%04d%02d%02d%02d%02d%02d",filenameyear,filenamemonth,filenameday,filehour,filemin,filesec);
sExcelFile = timeStr + ".xls";
// prompt the user (with all document templates)
CFileDialog dlgFile(FALSE,".xls",sExcelFile);
CString title;
CString strFilter;
title = "导出";
strFilter = "Excel文件(*.xls)";
strFilter += (TCHAR)'\0'; // next string please
strFilter += _T("*.xls");
strFilter += (TCHAR)'\0'; // last string
dlgFile.m_ofn.nMaxCustFilter++;
dlgFile.m_ofn.nFilterIndex = 1;
// append the "*.*" all files filter
CString allFilter;
VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
strFilter += allFilter;
strFilter += (TCHAR)'\0'; // next string please
strFilter += _T("*.*");
strFilter += (TCHAR)'\0'; // last string
dlgFile.m_ofn.nMaxCustFilter++;
dlgFile.m_ofn.lpstrFilter = strFilter;
dlgFile.m_ofn.lpstrTitle = title;
if (dlgFile.DoModal()==IDCANCEL)
return FALSE; // open cancelled
sExcelFile.ReleaseBuffer();
if (MakeSurePathExists(sExcelFile,true)) {
if(!DeleteFile(sExcelFile)) { // delete the file
AfxMessageBox("覆盖文件时出错!");
return FALSE;
}
}
return TRUE;
}
void ExportListToExcel(CListCtrl* pList, CString strTitle)
{
CString warningStr;
if (pList->GetItemCount ()>0) {
CDatabase database;
CString sDriver;
CString sExcelFile;
CString sSql;
CString tableName = strTitle;
// 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 没有发现Excel驱动
AfxMessageBox("没有安装Excel!\n请先安装Excel软件才能使用导出功能!");
return;
}
///默认文件名
if (!GetDefaultXlsFileName(sExcelFile))
return;
// 创建进行存取的字符串
sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);
// 创建数据库 (既Excel表格文件)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
// 创建表结构
int i;
LVCOLUMN columnData;
CString columnName;
int columnNum = 0;
CString strH;
CString strV;
sSql = "";
strH = "";
columnData.mask = LVCF_TEXT;
columnData.cchTextMax =100;
columnData.pszText = columnName.GetBuffer (100);
for(i=0;pList->GetColumn(i,&columnData);i++)
{
if (i!=0)
{
sSql = sSql + ", " ;
strH = strH + ", " ;
}
sSql = sSql + " " + columnData.pszText +" TEXT";
strH = strH + " " + columnData.pszText +" ";
}
columnName.ReleaseBuffer ();
columnNum = i;
sSql = "CREATE TABLE " + tableName + " ( " + sSql + " ) ";
database.ExecuteSQL(sSql);
// 插入数据项
int nItemIndex;
for (nItemIndex=0;nItemIndex<pList->GetItemCount ();nItemIndex++){
strV = "";
for(i=0;i<columnNum;i++)
{
if (i!=0)
{
strV = strV + ", " ;
}
/*else
{
strV = strV + " '" + itemType[nItemIndex] +"' ";
continue;
}*/
strV = strV + " '" + pList->GetItemText(nItemIndex,i) +"' ";
}
sSql = "INSERT INTO "+ tableName
+" ("+ strH + ")"
+" VALUES("+ strV + ")";
//AfxMessageBox(sSql);
database.ExecuteSQL(sSql);
}
}
// 关闭数据库
database.Close();
warningStr.Format("导出文件保存于%s!",sExcelFile);
AfxMessageBox(warningStr);
}
}
void OnButtonExport()
{
// TODO: Add your control notification handler code here
ExportListToExcel(&m_cList, "adfsaf");
}相关推荐
VS2008环境使用MFC操作读取excel文件
VS 2008 MFC EXCEL
GetExcelDriver()获取到Excel驱动
在用MFC读写Excel的时候,需要用到ODBC的方式。这个时候,如果不想手动输入Excel的驱动名称,就需要自动获取。 下面是两种情况的下的获取方式。 方式一:多字符集 CString MyDlg::GetExcelDriver() { char szBuf[2001]; WORD cbBufMax = 2000; WORD cbBufOut; char *pszBuf = szBuf; CString sDriver; // 获取已安装驱动的名称(
MFC与Excel的交互操作实现
在当今信息技术日新月异的背景下,自动化办公的需求愈显突出,而Microsoft Excel作为办公自动化中不可或缺的工具之一,其与其他应用软件的交互显得尤为重要。本章将介绍MFC(Microsoft Foundation Classes)与Excel交互的基础概念,为理解后续章节内容打下坚实的基础。
java excel odbc_ODBC方式读写EXCEL文件
这种方法的好处是以数据库的方式读取文件而不需要打开EXCEL文件,节省资源第一步:在stdafx.h中添加头文件#include#include第二步:测试Excel驱动是否安装,CStringCHomisProView::GetExcelDriver(){char szBuf[2001];WORD cbBufMax = 2000;WORD cbBufOut;char *pszBuf = szBu...
VC创建Excel写入内容
VC++、Windows XP 在VC++中使用EXCEL表格、操作EXCEL表格
Apache Doris IP变更问题详解
Apache Doris IP变更问题详解
GetExcelDriver函数需要自定义
这个是自定义函数,不是系统自带函数,所以。。你加什么头文件都没用。 自定义函数实现如下: CString GetExcelDriver() { char szBuf[2001]; WORD cbBufMax = 2000; WORD cbBufOut; char *pszBuf = szBuf; CString sDriver; // 获取已安
告别OFDM卡顿:用MATLAB手把手仿真AFDM波形,搞定高铁、无人机通信的时变信道难题
本文详细介绍了如何使用MATLAB仿真AFDM波形,解决高铁和无人机通信中的时变信道难题。通过仿射变换技术,AFDM在多普勒频移严重的场景下表现优异,显著提升通信质量。文章包含参数配置、波形生成、性能对比等实战内容,适合通信工程师和研究人员参考。
利用ODBC把数据库数据导出为Excel文件
Step1:取得Excel驱动程序,验证电脑是否安装了Excel驱动程序。代码如下:CString CReportCharge::GetExcelDriver(){ char szBuf[2001]; WORD cbBufMax = 2000; WORD cbBufOut; char *pszBuf = szBuf; CString sDriver;
window下迁移SVN仓库到新的windows服务器
window下迁移SVN仓库到新的windows服务器
STM32解析航模遥控器的PPM信号
使用STM32对航模遥控器的PPM信号进行解析
mfc对Excel的操作
mfc对Excel的操作:导入数据,导出数据。
视觉Transformer实战 | Data-efficient image Transformer(DeiT)详解与实现
在计算机视觉领域,Vision Transformer (ViT) 已经证明了纯 Transformer 架构在图像分类任务上的强大能力。然而,ViT 通常需要在大规模数据集上预训练才能达到最佳性能,DeiT (Data-efficient image Transformer) 通过引入一系列训练策略和优化,使得 Transformer 模型能够在相对较小的数据集上取得优异表现。本节将详细介绍 DeiT 的技术原理,并使用 PyTorch 从零开始实现 DeiT 模型。
mfc中操作excel
在 MFC(Microsoft Foundation Classes)中操作 Excel,主要通过 OLE 自动化(OLE Automation) 实现,本质是调用 Excel 暴露的 COM 接口。Excel 的对象模型是一个层次化的结构,MFC 通过包装这些 COM 接口(生成对应的类,如 _Application、Workbook 等),让开发者可以通过类的方法和属性操作 Excel。
非结构化数据在大数据湖中的应用实践
想象一下,你正在整理一个杂乱的书房。有些书整整齐齐地放在书架上,每本书都有明确的标题、作者和出版日期——这些就是结构化数据,它们像数据库中的表格,有固定的格式和字段。但书房里还有更多东西:散落的照片、手写的笔记、录音带、视频光盘、甚至还有画作。这些物品没有固定的格式,每件都独一无二——这就是非结构化数据。在技术术语中,非结构化数据是指没有预定义数据模型或组织形式的信息。文本文档(Word、PDF、TXT)电子邮件和社交媒体内容图像和照片(JPG、PNG)音频文件(MP3、WAV)
180.在 Vue3 中使用 OpenLayers 实现多个多边形的绘制、编辑、删除与清空
【摘要】本文介绍如何在Vue3+TypeScript环境下使用OpenLayers实现多边形地图交互功能。通过Composition API封装核心逻辑,实现了多边形绘制、编辑、删除及清空等操作。关键技术包括:使用VectorLayer管理图形数据,Draw/Modify/Select交互控制,以及通过ref()管理交互状态。文中提供了完整代码示例,并解决了交互对象叠加问题,为开发GIS应用提供了基础模块。该方案支持扩展为数据库存储、后端交互等高级功能。
【MFC/C++操作Excel】Excel篇
MFC操作Excel 下面的操作基于Excel2003 一.初始化操作 1.导入类库 点击查看->建立类向导-> Add Class...\From a type Library...-> C:\Program Files\Microsoft Office\Office\EXCEL.EXE,接下来就可以看到导入的类excel.h, excel.cpp。 2.初始化COM 找到App
【我的Android进阶之旅】Android自定义View实现一个游戏摇杆,来实现监听遥动的方向或者监听摇动的角度的功能
一、需求描述 去年有个需求,需要使用自定义View实现一个游戏摇杆,来识别上下左右摇动的方向。 有点类似下面这样的王者荣耀游戏摇杆的效果 二、业界已有的参考资料 在下面这篇博客介绍了如何自定义游戏摇杆 2.1 博客介绍 Android自定义摇杆 2.1.1 功能 支持自适应大小 支持2个方向、4个方向、8个方向的摇动监听 支持摇动角度获取 可选回调模式 支持可摇动区域自定义 支持摇杆自定义 支持设置图片、色值、Shape图形 2.1.2 效果图 2.1.3 设置回调方式 setCallBac
《MFC如何添加EXCEL库和操作EXCEL》
EXCEL工作簿、工作表、单元格、行、列 我们在使用EXCEL时,需要搞清楚EXCEL应用程序、工作簿、工作表以及单元格的关系,还有如何设置字体和背景以及边框的属性。总之,就是1个工作簿(workbook)中含有很多个工作表(worksheet),工作表(worksheet)由行(cols)和列(rows)组成,行和列又由很多个单元格(cell)组成。由于在项目中使用到了EXCEL进行数据统计,...
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
MFC读写Excel操作
前言 现在遇到特别的需求,需要将Excel中的数据提出,通过算法处理,然后将数据写会Excel。所以这篇文章,就主要来做这件事情。 参考博客: 博客1 :读Excel,写Excel,获取驱动。基于win32控制台写的。 博客2 :读Excel,写Excel,获取驱动。基于MFC写的。猜测,应该是多字符集,没有做多字符集与Unicode的转码。 官网API 这是官网的API可以参考 多字符转Unicode 我的程序是基于VS2010MFC开发的,Unicode项目,所以用到宽字符与多字...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
MFC操作Excel增删改查
本文是在MFC中操作excel,并将excel中的数据导进到listCtrl控件中,并在控件中进行增删改查操作,同时保存到excel表中。 新建MFC项目 应用程序添加,基于对话框模式,下一步,直到 一定要勾选自动化。因为后面需要加入一些需要的库,不然会出现错误 对话框 在对话框中加入list Control控件,在属性中修改为report类型,并添加变量m_list 添加一个 edit control 控件,之后要在列表控件中双击修改,添加变量m_edit 在类视图中找到Dlg类,再在下面找到OnIni
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
使用MFC操作EXCEL文件
使用MFC操作EXCEL文件 分类: EXCEL 2012-09-03 09:30 14914人阅读 评论(5) 收藏 举报 excelmfcbooks工作applicationoffice 一、加载 1、 在VC6.0里创建一个MFC工程 2、打开MFCClassWizard窗口(查看—>建立类向导),选择Automation,单击AddClass按钮,选择Froma type libr
MFC 创建和操作Excel2007 文件
目标: 生成一个excel文件,该文件可以使用exc
MFC操作EXCEL封装类
MFC操作EXCEL简单的功能封装,方便工作使用。 #pragma once #include "excel9.h" enum eAlignmentStatus { Alignment_Left = -4131, Alignment_Middle = -4108, Alignment_Right = -4152, Alignment_Top = -4160, Alignment_
2万+



被折叠的 条评论
为什么被折叠?



