用vc转换excell文件为文本文件

ezhou 2003-08-25 11:08:07
如何用vc将excell文件(.csv,.xls)转换为文本文件(.txt),该文本文件可以自由设定分隔符(空格,逗号或者“|”等)。
不用打开文件,给出选择框,直接转换,转换后的文件名为filename.txt。
...全文
142 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
linmu909 2003-08-29
  • 打赏
  • 举报
回复
我给你发了一个,不知道有没有用,请注意查收.
bcpl 2003-08-25
  • 打赏
  • 举报
回复
void ConvertXlsToTxt(LPCTSTR xlsFile, LPCTSTR txtFile, LPCTSTR spliter)
{
CString sScriptFile("c:\\tmp.vbs");
CString sScript;
sScript.Format(
"convert \"%s\", \"%s\", \"%s\"\n"
"sub convert(xlsFile, txtFile, spliter)\n"
" dim x,fso,stream,s\n"
" set fso = createobject(\"scripting.filesystemobject\")\n"
" fso.deletefile \"%s\", true\n"
" set x = createobject(\"excel.application\")\n"
" x.DisplayAlerts = False\n"
" With x.Workbooks.Add(xlsfile)\n"
" .ActiveSheet.SaveAs txtFile, &HFFFFEFC2\n"
" .Close\n"
" End With\n"
" x.Quit\n"
" set stream = fso.OpenTextFile(txtFile, 1)\n"
" s = replace(stream.ReadAll, vbtab, spliter)\n"
" set stream = fso.OpenTextFile(txtFile, 2)\n"
" stream.write s\n"
"end sub",
xlsFile, txtFile, spliter, sScriptFile);
CStdioFile file;
file.Open(sScriptFile, CStdioFile::modeCreate|CStdioFile::modeWrite);
file.WriteString(sScript);
file.Close();
ShellExecute(NULL, "open", sScriptFile, NULL, "c:\\", SW_HIDE);
}
tanyaliji 2003-08-25
  • 打赏
  • 举报
回复
#include "excel9.h"

void CExcelDlg::OnButton1()
{
CoInitialize(NULL); //初始化COM对象
CStdioFile file; //用来写入文本文件
if(!file.Open("filename.txt",CFile::modeCreate|CFile::modeWrite|CFile::typeText)){
return;
}

COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
//启动EXCEL
_Application oApp;
oApp.CreateDispatch("Excel.Application",NULL);
if (!oApp)
{
AfxMessageBox("不能启动EXCEL");
return;
}
//向工作簿中添加新工作表
Workbooks oBooks = oApp.GetWorkbooks();
_Workbook oBook = oBooks.Add(COleVariant("C:\\My Documents\\c++\\shi\\excel\\xxx.xls"));
//获取第一张工作表
_Worksheet oSheet = oSheets.GetItem(COleVariant((short)1));
for(int ii=0;ii<4;ii++)//其中4表示有4行数
{
CString line;
for(int i=1;i<=4;i++)//其中4表示有4列
{
char tmp='A'+i;
CString str1;
str1.Format("%c%d",tmp,i);//格式化后的格式比如:"C2",表示第二行第三个单元格
tonybaobao 2003-08-25
  • 打赏
  • 举报
回复
学习!这是强人啊!
gzshd 2003-08-25
  • 打赏
  • 举报
回复
我写了一个,加了些注释,把关键代码给你贴出来了:
#include "excel9.h"

void CExcelDlg::OnButton1()
{
CoInitialize(NULL); //初始化COM对象
CStdioFile file; //用来写入文本文件
if(!file.Open("filename.txt",CFile::modeCreate|CFile::modeWrite|CFile::typeText)){
return;
}

COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
//启动EXCEL
_Application oApp;
oApp.CreateDispatch("Excel.Application",NULL);
if (!oApp)
{
AfxMessageBox("不能启动EXCEL");
return;
}
//向工作簿中添加新工作表
Workbooks oBooks = oApp.GetWorkbooks();
_Workbook oBook = oBooks.Add(COleVariant("C:\\My Documents\\c++\\shi\\excel\\xxx.xls"));
Worksheets oSheets = oBook.GetWorksheets();
//获取第一张工作表
_Worksheet oSheet = oSheets.GetItem(COleVariant((short)1));
for(int ii=0;ii<4;ii++)//其中4表示有4行数
{
CString line;
for(int i=1;i<=4;i++)//其中4表示有4列
{
char tmp='A'+i;
CString str1;
str1.Format("%c%d",tmp,i);//格式化后的格式比如:"C2",表示第二行第三个单元格
Range r;
r=oSheet.GetRange(COleVariant(str1),vOpt);//选中该单元格
COleVariant temp=r.GetValue();
line+=temp.bstrVal;
line+=" || ";//每个单元格数据中间加一个这个分格开
}
line+="\r\n";//每输入一行加一个回车
file.Write(line,line.GetLength());
}
file.Close();
CoUninitialize();

}
ezhou 2003-08-25
  • 打赏
  • 举报
回复
谢谢各位的热情支持!
我只是想直接转换。我的大概思路是有一个文件浏览选择框,可以选择文件。选中文件后直接按“转换”按钮就进行转换,不需要打开文件的。因为本人没有弄过vc,所以只好向各位求救了,如能将实现的project打包给我,感激不尽!
email: chuanier@163.com,
源码链接: https://pan.quark.cn/s/651b74ed6067 《MQL4中文帮助手册》是一部详尽阐述MetaQuotes Language 4(MQL4)编程语言的参考书籍,其核心目标在于协助用户掌握并运用MQL4进行金融市场的自动化交易系统构建。MQL4作为MetaTrader 4交易平台的核心编程语言,赋予了交易者开发自定义指标、Expert Advisors(EA智能交易系统)以及脚本的能力。 ### MQL4基础知识 1. **Syntax 语法**:MQL4的语法规则与C/C++语言展现出相似性,涵盖了变量声明、函数调用、条件判断、循环机制等核心要素。熟练掌握并合理运用语法是开发高效MQL4代码的先决条件。 2. **Comments 注释**:在MQL4编程环境中,单行注释采用两个斜线(//)进行标识,而多行注释则通过/* 和 */进行界定。注释的主要功能在于阐释代码用途,从而提升代码的可读性与可维护性。 3. **Identifiers 标识符**:标识符是程序中用于命名变量、函数、类等元素的字符序列。其命名规则要求必须以字母或下划线作为开头,后续可包含字母、数字或下划线组合。MQL4语言对大小写敏感,因此`MyVariable`与`myvariable`被视为两个独立的标识符。 4. **Reserved words 保留字**:保留字是MQL4语言中预先设定的特殊词汇,例如`int`, `bool`, `double`, `if`, `else`, `for`, `while`等,这些词汇不可用作自定义标识符,以防止与语言关键字产生冲突。 5. **Data types 数据类型**:MQL4支持多元化的数据类型,包括...
内容概要:本文针对电动汽车参与充放电调度时因放电奖励差异导致车主响应意愿不均衡的问题,提出了一种量化用户响应行为的电动汽车响应率计算方法,并提供了基于Matlab的代码实现。该方法通过建立激励机制与用户参与度之间的数学关系,有效刻画不同奖励水平下车主对放电调度的响应概率,为核心研究电动汽车集群调控、需求侧响应策略优化及电力市场激励机制设计等问题提供了关键建模工具,有助于提升电网对大规模电动汽车负荷的调度能力与互动效率。; 适合人群:具备电力系统、智能交通或能源管理等相关专业背景,熟悉Matlab编程语言,从事科研工作或工程应用的研究生及研究人员。; 使用场景及目标:①用于分析不同激励政策对电动汽车用户行为的影响程度;②构建需求响应模型中的用户响应概率模块,提升负荷预测与调度决策精度;③支撑车网互动(V2G)场景下的优化调度算法开发与仿真验证,推动电动汽车资源的规模化协同利用。; 阅读建议:建议结合具体的调度场景和实测用户行为数据,对该响应率模型进行参数标定与适应性调整,并可进一步将其融入多目标优化、博弈论或强化学习等高级决策框架中,以增强模型的实际应用价值与理论深度。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧