【MFC学习二】CFileDialog导出文件
用CFileDialog导出文件,用户可指定文件名后缀等,感觉操作上比上文的 BROWSEINFO 更加人性化。
//将数据项写入CSV文件
int PutCSVItemLine(FILE *file, CStringArray &sItemLine)
{
//准备行数据
CStringA sLineString; //循环取子项
for(INT_PTR nItem=0; nItem<sItemLine.GetSize(); nItem++)
{
//取子项
CStringA sItem(sItemLine.GetAt(nItem)); //查找是否包含引号或逗号
if(sItem.FindOneOf("\",\r\n") >= 0)
{
//单引号替换为双引号
sItem.Replace("\"", "\"\""); //首尾用引号包含
sItem.Insert(0, "\""); sItem += "\"";
} //添加逗号分隔符
if(!sLineString.IsEmpty()) sLineString += ","; //追加数据
sLineString += sItem;
} //行尾添加\r\n
sLineString += "\r\n"; //写入文件
return (int) fwrite((LPCSTR)sLineString, 1, sLineString.GetLength(), file); }
void DLG_FuncPwdList::OnBnClickedExport()
{
// TODO: 在此添加控件通知处理程序代码
CString strFilter, defaultFileName, finalFileName;
SYSTEMTIME t;
GetLocalTime(&t);
defaultFileName.Format(_T("功能密码%d%d%d%d%d%d"),t.wYear,t.wMonth,t.wDay, t.wHour, t.wMinute, t.wSecond); //
strFilter = "Excel文件 (*.csv)|*.csv|文本文件 (*.txt)|*.txt||";
CFileDialog TmpDlg(FALSE, _T("csv"), defaultFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFilter.GetBuffer(), this); if (TmpDlg.DoModal() == IDOK)
{
//获取文件路径
finalFileName = TmpDlg.GetPathName();
CString fileExt = TmpDlg.GetFileExt(); //导出文件
FILE *f = NULL;
if(_tfopen_s(&f, finalFileName, _T("wb")) == 0)
{
//标题
CStringArray sLine;
sLine.Add(_T("序号"));
sLine.Add(_T("功能名称"));
sLine.Add(_T("密码"));
PutCSVItemLine(f, sLine);
for(int i=0;i<FuncPwdList.size();i++)
{
sLine.RemoveAll();
CString tmp;
tmp.Format(_T("%d"),FuncPwdList[i].FuncId);
sLine.Add(tmp);
sLine.Add(FuncPwdList[i].FuncName);
if(fileExt.CompareNoCase(_T("csv")) == 0)
{
tmp.Format(_T("\t%s\t"),FuncPwdList[i].Pwd);//处理开头为0的数字字符串
}
else
{
tmp.Format(_T("%s"),FuncPwdList[i].Pwd);
}
sLine.Add(tmp);
PutCSVItemLine(f, sLine);
}
fclose(f);
}
CString msg = "导出成功!文件路径:" + finalFileName;
AfxMessageBox(msg);
return;
}
return;
}
【MFC学习二】CFileDialog导出文件的更多相关文章
- C++ MFC学习 (二)
使用向导创建MFC程序 1. 新建-> 选择 MFC -> MFC应用程序 ->下一步 2. 应用程序类型选择 选择单个文档,MFC标准 -> 下一步 3. 下一 ...
- MFC 学习笔记
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_toolbar;CImageList ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- Quartz学习--二 Hello Quartz! 和源码分析
Quartz学习--二 Hello Quartz! 和源码分析 三. Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...
随机推荐
- 多倍图切图cutterman
- 如何实现纯网页语音视频聊天和桌面分享?(附源码,PC版+手机版)
在网页里实现文字聊天是比较容易的,但若要实现视频聊天,就比较麻烦了.本文将实现一个纯网页版的视频聊天和桌面分享的Demo,可直接在浏览器中运行,不需要安装任何插件. 一. 主要功能及支持平台 1.本D ...
- HP笔记本(Inspiron 7472) 视频时无摄像头的处理方案
需要视频考试的前一天,测试摄像头时发现微信视频时竟然摄像头打不开.比较焦急,尝试了好几种办法,并在2小时内找出解决方案. 一.查看设备是否被禁用 我的电脑->右键->设备管理器-> ...
- kafka 性能优化与常见问题优化处理方案
本文为博主原创,未经允许不得转载: 1. JVM参数优化设置 kafka是scala语言开发,运行在JVM上,需要对JVM参数合理设置,修改bin/kafka-start-server.sh中的jv ...
- 图的遍历(DFS和BFS)
声明:图片及内容基于https://www.bilibili.com/video/BV1rp4y1Q72r?from=articleDetail 图的遍历 深度优先遍历(DFS) DFS核心是递归和栈 ...
- 【Git】常用 Git 命令清单
[来源]https://blog.csdn.net/hj7jay/article/details/53431717
- K8S Only IPV6的创建过程之二 完整版
K8S Only IPV6的创建过程之二 完整版 整体过程 1. 阿里云新增一台虚拟机, 开通IPV6.与数据库,redis实现物理隔离. 并且进行环境基本处理,安装kubeadm等组件. 2. ku ...
- [转帖]等待事件 enq:TX - row lock contention分析与解决
6月30日,数据库发生了大量锁表.大概持续1小时,并且越锁越多.后来通过业务人员停掉程序,并kill掉会话后解决. 几天后再EM上查看CPU占用: CPU发生了明显等待. 主要是由于enq:TX - ...
- [转帖]Oracle迁移到MySQL时数据类型转换问题
https://www.cnblogs.com/yeyuzhuanjia/p/17431979.html 最近在做"去O"(去除Oracle数据库)的相关工作,需要将Oracle表 ...
- [转帖]CENTOS6.5 没有/LIB64/LIBFUSE.SO.2的问题
yum install fuse-libs