本人是初学者,最近在别写一个Word文件检索程序,需要将Word文件中的文字内容提取出来然后进行分词。使用的平台是Visual Studio 2008 C++创建的Windows窗口应用程序。下面是我出现问题的代码。Microsoft::Office::Interop::Word::Application^ WordApp = gcnew Microsoft::Office::Interop::Word::Application();
Microsoft::Office::Interop::Word::Document^ doc;
Object^ nullobj;
nullobj = System::Reflection::Missing::Value;
char *m = "E:\\aaa.docx"; //文件路径
String^ mString = gcnew String(m);
Object^ mObj = mString;
Object^ saverChanges = true;
doc = WordApp->Documents->Open(mObj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj);
mString = doc->Content->Text; //提取文本内容
doc->Close(saverChanges,nullobj,nullobj);
WordApp->Quit(saverChanges,nullobj,nullobj);使用编译器编译后,出现如下错误信息:
1>e:\projects\word\readword\Form1.h(108) : error C2882: “Text”: 在表达式中非法使用命名空间标识符
1>e:\projects\word\readword\Form1.h(109) : error C2385: 对“Close”的访问不明确
1> 可能是“Close”(位于基“Microsoft::Office::Interop::Word::_Document”中)
1> 也可能是“Close”(位于基“Microsoft::Office::Interop::Word::DocumentEvents2_Event”中)
1>e:\projects\word\readword\Form1.h(109) : error C3861: “Close”: 找不到标识符
1>e:\projects\word\readword\Form1.h(110) : error C2385: 对“Quit”的访问不明确
1> 可能是“Quit”(位于基“Microsoft::Office::Interop::Word::_Application”中)
1> 也可能是“Quit”(位于基“Microsoft::Office::Interop::Word::ApplicationEvents4_Event”中)
1>e:\projects\word\readword\Form1.h(110) : error C3861: “Quit”: 找不到标识符本人实在是想不到解决方案了,跪请各位高手指点!谢谢!
Microsoft::Office::Interop::Word::Document^ doc;
Object^ nullobj;
nullobj = System::Reflection::Missing::Value;
char *m = "E:\\aaa.docx"; //文件路径
String^ mString = gcnew String(m);
Object^ mObj = mString;
Object^ saverChanges = true;
doc = WordApp->Documents->Open(mObj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj);
mString = doc->Content->Text; //提取文本内容
doc->Close(saverChanges,nullobj,nullobj);
WordApp->Quit(saverChanges,nullobj,nullobj);使用编译器编译后,出现如下错误信息:
1>e:\projects\word\readword\Form1.h(108) : error C2882: “Text”: 在表达式中非法使用命名空间标识符
1>e:\projects\word\readword\Form1.h(109) : error C2385: 对“Close”的访问不明确
1> 可能是“Close”(位于基“Microsoft::Office::Interop::Word::_Document”中)
1> 也可能是“Close”(位于基“Microsoft::Office::Interop::Word::DocumentEvents2_Event”中)
1>e:\projects\word\readword\Form1.h(109) : error C3861: “Close”: 找不到标识符
1>e:\projects\word\readword\Form1.h(110) : error C2385: 对“Quit”的访问不明确
1> 可能是“Quit”(位于基“Microsoft::Office::Interop::Word::_Application”中)
1> 也可能是“Quit”(位于基“Microsoft::Office::Interop::Word::ApplicationEvents4_Event”中)
1>e:\projects\word\readword\Form1.h(110) : error C3861: “Quit”: 找不到标识符本人实在是想不到解决方案了,跪请各位高手指点!谢谢!
.net里没有指针的概念吧
第一步 import office com对象库
Stdafx.h.
#import "C:\Program Files (x86)\Common Files\MicrosoftShared\OFFICE14\MSO.dll" \
rename("RGB", "_OfficeRGB") #import "C:\Program Files (x86)\Common Files\MicrosoftShared\VBA\VBA6\VBE6EXT.OLB"
#import "D:\Program Files\MicrosoftOffice\Office14\MSWORD.OLB"
rename("ExitWindows","_OfficeExitWindows") \
rename("FindText", "_ScriptFindText")
第二步 .cpp
if(FAILED(::CoInitialize(NULL)))
return;
HRESULT hr = S_OK;
Word::_ApplicationPtr pApp=NULL;
try
{
pApp.CreateInstance (__uuidof(Word::Application),NULL);
pApp ->PutVisible(VARIANT_TRUE);
Word::_DocumentPtr pDoc=pApp->GetDocuments()->Open(&(_variant_t("C:\\FreeX.docx")));
_bstr_t content=pDoc->Content->Text;
longnCmtCount = pDoc->Comments->Count;
TRACE("Word content: %s\n", (LPCTSTR)(_bstr_t)content);
for(long i = 1; i < nCmtCount+1; i++)
{
Word::CommentPtrpCmt= pDoc->Comments->Item(i);
_bstr_t bstrCmt =pCmt->Range->Text;
TRACE("WordComments[%d]: %s\n", i, (LPCTSTR)bstrCmt);
pCmt.Release();
pCmt = NULL;
}
pDoc->Close();
pApp->Quit();
//release documentptr smart pointer;
pDoc.Release();
}
catch(_com_error pCome)
{
TRACE("Error info: %s\n", (LPCTSTR)(_bstr_t)(pCome.Description()));
TRACE("Error info: %s\n", (pCome.ErrorMessage()));
}
if(pApp)
{
pApp.Release();
}
::CoUninitialize();