VC操作MPP檔案

2021-09-07 21:58:33 字數 2629 閱讀 5133

1.背景簡介

因需要對office系列進行程式操作,特需要使用com程式設計。

microsoft project生成進度計畫,office家族軟體,檔案字尾為.mpp。

具體資訊見維基百科

讀取mpp檔案,網路上示例基本為c#,因為我所使用的是vc,c#**只能做參考了。

因為com元件是通用的,跨語言的(微軟系),既然c#能做,那麼vc也能做。

開發環境:

project版本:microsoft project 2010。

vs版本:vs2005。

2.vc示例程式

1、  建立mfc工程,工程名為mympp。

建立乙個對話方塊工程。

2、  增加com介面包裝類。

com介面的呼叫,可以通過mfc新增進來。

右鍵add->class

選擇mfc class from typelib

選擇ms project com元件,並生成包裝類。

microsoft project 14.0 object library:本機安裝的project 2010所提供的com元件。

generated classes:為所需要用到的包裝類,包裝inte***ces中的介面。

最後,會生成五個標頭檔案。

ciprojectdoc.h、cmsproject.h、cprojects.h、ctask.h、ctasks.h。

3、  com標頭檔案調整。

將(ciprojectdoc.h、cmsproject.h、cprojects.h、ctask.h、ctasks.h)

標頭檔案中**替換。

#import "c:\\program files\\microsoftoffice\\office14\\msprj.olb" no_namespace替換為#pragma once

ciprojectdoc.h、cmsproject.h中使用了很多沒有生成的類,會導致編譯不通過。

解決方法:將出現t*的地方替換為lpdispatch。

例:調整為:

4、  mpp讀取**。

新增乙個按鈕,按鈕響應**如下。

#include "comdef.h"

#include "cmsproject.h"

#include "cprojects.h"

#include "ciprojectdoc.h"

#include "ctasks.h"

#include "ctask.h"

void cmymppdlg::onbnclickedbutton1()

cstring strfilepath = filedlg.getpathname();

::coinitialize(null);

readmppinfo(strfilepath);

::couninitialize();

}void cmymppdlg::readmppinfo(const cstring& strfilepath)

_variant_t(true), vtmissing, vtmissing,

vtmissing, vtmissing, vtmissing,

vtmissing, vtmissing, vtmissing, vtmissing,

1, vtmissing, vtmissing,

vtmissing, vtmissing);

if (!openres)

cprojects projs;

int nprojcount = projs.get_count();

for (int i = 1; i <= nprojcount; i++)}}

catch(_com_error &e)

if (!strtipinfo.isempty())

}int cmymppdlg::gettimespan(const coledatetime& dtstart, const coledatetime& dtfinish)

else

return ndays;

}cstring cmymppdlg::oledatetostr(coledatetime oledate)

cstring cmymppdlg::inttocstring(int ninput)

5、  執行結果。

php解析mpp檔案

php沒有找到相應的包 j a的mpxj可以實現 所以借助j abridge.jar j abridge介紹 1.安裝jdk,設定環境變數 我的版本jdk1.8.0 131 我的版本mpxj 7.0.2 解壓,將mpxj.jar和lib下面的commons collections4 4.1.jar ...

VC 檔案操作

1 檔案的查詢 當對乙個檔案操作時,如果不知道該檔案是否存在,就要首先進行查詢。mfc中有乙個專門用來進行檔案查詢的類 cfilefind 使用它可以方便快捷地進行檔案的查詢。下面這段 演示了這個類的最基本使用方法。cstring strfiletitle cfilefind finder bool...

VC 檔案操作

try else catch cmemoryexception e e geterrormessage szbuff,max path afxmessagebox szbuff catch cfileexception e e geterrormessage szbuff,max path afxm...