【MFC/C++ 操作Excel】将数字格式单元格转为文本格式
来源:互联网 发布:九曲网络 编辑:程序博客网 时间:2024/05/16 17:40
序
首先,请您先阅读 MFC操作office通用分析方法一篇,或者你需要了解本文的分析方法是按如下进行的:
1. 将我们的处理过程用宏记录下来
2. 将这一过程从VB翻译为VC
正文
当我们在用MFC操作excel时,为了操作的方便性,常常需要将数据转为文本格式来保存,这一过程怎样用C++来实现呢?
第一步:我们可以使用以下方法将文本转为文本格式:选中要转为文本格式的单元格,右键-》设置单元格格式-》文本-》确定。
第二步:上面这一过程用宏记录下来是这样的,下面选择的是从A5到J64之间的单元格:
Range("A5:J64").SelectSelection.NumberFormatLocal = "@"
第三步:将上述VB转为VC实现:
//将beginS到endS之间的单元格转为文本格式存储
BOOL SetTextFormat(CString beginS, CString endS){ //注意,这里的m_ecSheet是_Worksheet的对象,你之前要先得到worksheetRange m_ecRange = m_ecSheet.GetRange(COleVariant(beginS), COleVariant(endS)); if(m_ecRange.m_lpDispatch) { //选择beginS, endS m_ecRange.Select();//设置为文本格式 m_ecRange.SetNumberFormatLocal(COleVariant("@")); return TRUE; } return FALSE;}
调用方法:SetTextFormat(“A5”, “J64”)
但是用上面的方法设置之后,原来是数字格式的单元格仍然不是文本格式,如果直接用VC操作会出错,这里有一种区分数字是否真正转为文本格式的方法:
下图左是按照上述方法设置后的结果,此时,数字仍然不是真正的文本,下图右则是真正的文本,它的特点是每个数字格左上角都有一个绿色的小三角。
那么如果将数字设置为真正的文本呢?我们按如下步骤进行。
第一步:手动设置方法
选中一列,按数据-》分列
直接按下一步
直接按下一步
这里要选择文本,红笔标出,然后按完成,此时,数字就变成真正的文本了。
第二步:上述过程用宏记录下来是这样的:
Range("A5:A64").Select Selection.TextToColumns Destination:=Range("A5"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 2), TrailingMinusNumbers:=True
第三步:将其转为VC来实现
_Worksheet m_ecSheet;//首先你要自己初始化哦!!!!Range m_ecRange;BOOL CExcelOperate::GetRangeAndValue(CString begin, CString end){ if(!m_ecSheet.m_lpDispatch) { AfxMessageBox("Sheet获取失败!", MB_OK|MB_ICONWARNING); return FALSE; } m_ecRange = m_ecSheet.GetRange(COleVariant(begin), COleVariant(end)); if(!m_ecRange.m_lpDispatch) { AfxMessageBox("Range获取失败!", MB_OK|MB_ICONWARNING); return FALSE; } ret = m_ecRange.GetValue2();//得到表格中的值 return TRUE;}BOOL CExcelOperate::SetRowToTextFormat(CString &beginS, CString &endS){ if(GetRangeAndValue(beginS, endS)) { m_ecRange.Select(); Range m_tempRange = m_ecSheet.GetRange(COleVariant(beginS), COleVariant(beginS)); if(!m_tempRange.m_lpDispatch) return FALSE; COleVariant vTrue((short)TRUE), vFalse((short)FALSE); int tempArray[2] = {1, 2}; COleSafeArray saRet; DWORD numElements = {2}; saRet.Create(VT_I4, 1, &numElements); long index = 0; int val = 1; saRet.PutElement(&index, &val); index++; val = 2; saRet.PutElement(&index, &val); //m_tempRange.GetItem(COleVariant((short)5),COleVariant("A")); m_ecRange.TextToColumns(m_tempRange.GetItem(COleVariant((short)1),COleVariant((short)1)), 1, 1, vFalse, vTrue, vFalse, vFalse, vFalse, vFalse, vFalse, saRet, vFalse, vFalse, vTrue); m_tempRange.ReleaseDispatch(); return TRUE; } return FALSE;}
- 【MFC/C++ 操作Excel】将数字格式单元格转为文本格式
- excel中如何将文本格式数字转为数字格式
- Excel 将数字格式中的e+转换为文本格式
- C# 操作Excel单元格格式
- C# 操作Excel单元格格式
- C# 操作Excel单元格格式
- C# 操作Excel单元格格式
- C# 操作Excel单元格格式
- 用jml导出数字时,excel单元格格式化文本格式转化成数字格式
- dfm格式转换: 将二进制格式转为文本格式
- POI 设置Excel单元格为文本格式
- JAVA设置EXCEL单元格为文本格式
- Excel 将数字格式中的e+14转换为文本数字格式
- MFC API 设置Excel单元格格式
- Excel中时间格式数据转为文本格式数据
- 将dos格式换行文本转为Unix格式
- VC 设置 Excel 的单元格格式 数字形式字符串 文本形式
- 将数字格式的计算结果转为汉字格式
- Curl使用问题
- 【MFC/C++ 操作Excel】C++下TextToColumns函数的参数
- Cocos2dx 下对sqlite3 的简单封装
- 视频处理的一些经验
- flex中的DataGrid组件
- 【MFC/C++ 操作Excel】将数字格式单元格转为文本格式
- 毕业设计(十四)--- 后台用户管理(4)之- 动态删除用户
- 关于Plist文件的读写
- Handler 简单使用
- loadrunner试用
- 中国电信cdma-全国SID分配表
- 数码相机的各项参数解释
- linux安装jdk
- 在Eclipse中Debug 为什么显示source not found