最近在项目维护过程中涉及到了office各种文档的解析,捣鼓了好长时间,有点点收货,记下来。
涉及文档:doc、docx、xls、xlsx、pptx。
语言:VC
下面对不同的文档进行简单解析:
一、word文档
1、首先想到的方法就是ado,网上一找一大片,下面给几个连接:http://www.docin.com/p-355819700.html ,,,http://huguangchaoren.blog.163.com/blog/static/888341502010922924154/ ,,,,http://blog.csdn.net/dancewyr/article/details/7674558,操作很简单,如果自己安装了office,在vs中找到项目下的类向导,添加“类型库中的mfc类”,在office目录下找到msword.olb,导入。下面简单写下自己的测试代码:
#include "CApplication.h"
#include "CDocuments.h"
#include "CDocument0.h"
#include "CRange.h"
void CdocxtestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString strFileName;
WCHAR chPath[MAX_PATH] = {0};
GetModuleFileName(NULL, chPath, MAX_PATH);
WCHAR * ptrPath = wcsstr(chPath,L"demo.exe");
*ptrPath = '\0';
strFileName.Format(L"%s\\111.doc",chPath);
CApplication app;
app.CreateDispatch(L"Word.Application");
OutputDebugStringA("CreateDispatch ok");
app.put_Visible(false);
OutputDebugStringA("put_Visible ok");
app.put_DisplayAlerts(false);
OutputDebugStringA("put_DisplayAlerts ok");
CDocuments docs = app.get_Documents();
COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
CDocument0 doc = docs.Open(COleVariant(strFileName),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
OutputDebugStringA("Open ok");
CRange range = doc.Range(vOpt,vOpt);
CString strs = range.get_Text();
OutputDebugStringW(strs);
range.ReleaseDispatch();
doc.ReleaseDispatch();
docs.ReleaseDispatch();
VARIANT SaveChanges,OriginalFormat