[求教OLE达人]VC中调用Word文档进行Save As的问题

miaomiao521 2004-11-14 07:57:45
我要把Word文档Save As为htm文件,可是格式都没了,怎么回事?
中间需要什么操作么?还是我Save As的函数参数不对?

部分代码如下:

_Application oApp;
Documents oDocs(oApp.GetDocuments());
_Document oDoc;


//Set up the DISPPARAMS for the SaveAs method (11 arguments)
VARIANT vArgsSaveAs[16];

BSTR bstrEmptyString;
bstrEmptyString = ::SysAllocString(OLESTR(""));

VARIANT vFalse, vTrue;
vFalse.vt = VT_BOOL;
vFalse.boolVal = FALSE;

vTrue.vt = VT_BOOL;
vTrue.boolVal = TRUE;

vArgsSaveAs[0].vt = VT_BSTR;
vArgsSaveAs[0].bstrVal = szhtmPath.AllocSysString(); //Filename
vArgsSaveAs[1].vt = VT_I4;
vArgsSaveAs[1].lVal = 4; //FileFormat
vArgsSaveAs[2] = vFalse; //LockComments
vArgsSaveAs[3].vt = VT_BSTR;
vArgsSaveAs[3].bstrVal = bstrEmptyString; //Password
vArgsSaveAs[4].vt = VT_BOOL;
vArgsSaveAs[4].boolVal = FALSE; //AddToRecentFiles
vArgsSaveAs[5].vt = VT_BSTR;
vArgsSaveAs[5].bstrVal = bstrEmptyString; //WritePassword
vArgsSaveAs[6] = vFalse; //ReadOnlyRecommended
vArgsSaveAs[7] = vTrue; //EmbedTrueTypeFonts
vArgsSaveAs[8] = vFalse; //SaveNativePictureFormat
vArgsSaveAs[9] = vFalse; //SaveFormsData
vArgsSaveAs[10] = vFalse; //SaveAsOCELetter
vArgsSaveAs[11] = vFalse; //Encoding
vArgsSaveAs[12] = vFalse; //InsertLineBreaks
vArgsSaveAs[13] = vFalse; //AllowSubstitutions
vArgsSaveAs[14] = vFalse; //LineEnding
vArgsSaveAs[15] = vFalse; //AddBiDiMarks

//Invoke the SaveAs method
oDoc.SaveAs(&vArgsSaveAs[0],
&vArgsSaveAs[1],
&vArgsSaveAs[2],
&vArgsSaveAs[3],
&vArgsSaveAs[4],
&vArgsSaveAs[5],
&vArgsSaveAs[6],
&vArgsSaveAs[7],
&vArgsSaveAs[8],
&vArgsSaveAs[9],
&vArgsSaveAs[10],
&vArgsSaveAs[11],
&vArgsSaveAs[12],
&vArgsSaveAs[13],
&vArgsSaveAs[14],
&vArgsSaveAs[15]
);

::SysFreeString(bstrEmptyString);

...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rivershan 2004-11-15
  • 打赏
  • 举报
回复
WdSaveFormat

常量 值
wdFormatDocument 0
wdFormatDOSText 4
wdFormatDOSTextLineBreaks 5
wdFormatEncodedText 7
wdFormatFilteredHTML 10
wdFormatHTML 8
wdFormatRTF 6
wdFormatTemplate 1
wdFormatText 2
wdFormatTextLineBreaks 3
wdFormatUnicodeText 7
wdFormatWebArchive 9
wdFormatXML 11
kyh99 2004-11-15
  • 打赏
  • 举报
回复
这样就OK了^_^
COleVariant vFalse((short)FALSE);
mydoc.SaveAs (COleVariant("c:\\love.htm"),vFalse,vFalse, COleVariant(""),vFalse,
COleVariant(""),vFalse,vFalse,vFalse,vFalse,vFalse);
蒋晟 2004-11-15
  • 打赏
  • 举报
回复 1
你自己保存成TXT了当然没格式了

// Save as a CommaSeparatedValue (CSV) flat file
adoc.SaveAs(variant("C:\\MrgSrc.txt"), //Filename
variant(4), //wdFormatDOSText = 4
variant(false), //LockComments
variant(""), //Password
variant(false), //Add to recent files
variant(""), //Write password
variant(false), //ReadOnlyRecommended
variant(false), //Embed TrueType fonts
variant(false), //SaveNativePictureFormat
variant(false), //SaveForms data
variant(false)); //SaveAsAOCELetter
rivershan 2004-11-15
  • 打赏
  • 举报
回复
不清楚
fisker0303 2004-11-14
  • 打赏
  • 举报
回复
up too~
逍遥的心 2004-11-14
  • 打赏
  • 举报
回复
帮顶,应该是参数

16,472

社区成员

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

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

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