现在把一个WORD文件存储到数据库中了,然后,在查询到此文件时如何将它打开呢?我尝试用msword,但是木有成功,各位有啥高见哇?
13 个解决方案
把它存成一个临时的doc,再用word打开这个临时的doc.
存到二进制字段的就是word的二进制,从数据库中读取后再存成一个word文件(临时文件),在用word打开这个文件
读取数据库数据,用WriteFile()生成一个binary文件,后缀名可以改为.doc
我写的是这样的,但是打开的word乱码。。。。,应该也是建了一个临时文件
CFile file;
file.Open("F:\\Project\\MyProject\\ChkProject (二进制流) - 副本\\1.doc",CFile::modeCreate|CFile::modeWrite);
file.Write(_T(pBuff),m_DocLen);
file.Close();
_Application sapp;
if(!sapp.CreateDispatch(_T("word.Application")))//启动WORD
{
AfxMessageBox("word启动失败!");
return;
}
_Document sDoc;//文档对象
Documents sDocs;//文档集合对象,派生于COleDispatchDriver
sDocs.AttachDispatch(sapp.GetDocuments(),true);//得到文档集合对象attach anIDispatch pointer to the COleDispatchDriver object
//打开文档对象
_variant_t FileName(_T("F:\\Project\\MyProject\\ChkProject (二进制流) - 副本\\1.doc"));
VARIANT varOptional;
VariantInit(&varOptional);
varOptional.vt=VT_ERROR;//指示Scode
varOptional.scode=DISP_E_PARAMNOTFOUND;
sDoc=sDocs.Open(&FileName, &varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional,&varOptional);
//显示文档并激活文档
sapp.SetVisible(true);
sDoc.Activate();
sapp.ReleaseDispatch();
加CFile::typeBinary标志读写文件,比如CFile::modeCreate|CFile::modeWrite|CFile::typeBinary
先测试看下是否是读写文件的问题还是存取到数据库问题,一个一个排除。