挺有意思的问题啊搜了一下,还是又解决方案的:看这里:http://stackoverflow.com/questions/153593/programmatically-access-a-microsoft-project-mpp-file-from-c
Here are the options:Interop (messy and horribly slow for large projects) 
Save project in XML and work with it (messy) 
Save project in the database (that's not publishing and it is available for project 2003 only - see ODBC option while saving). I've seen it being used a lot in the integration scenarios 
Projette (commercial, $10 per license) 
ILog Project Viewer (also commercial) 

解决方案 »

  1.   

    还有个,用VB.NET写的
    Private Sub Command1_Click()Dim rstMppDim sSQLMppDim sConnMppDim iCnt As IntegersFileName = "C:\Documents and Settings\Admin\My Documents\mpp2.mpp"sConnMpp = "Provider=Microsoft.Project.OLEDB.11.0;Project Name=" & sFileName & ";"' Shorter QuerysSQLMpp = "SELECT TaskId, TaskName, TaskStart, TaskFinish, TaskOutlineLevel, TaskOutlineNumber from Tasks"sSQLMpp = "SELECT * from Tasks"Set rstMpp = CreateObject("ADODB.Recordset")rstMpp.Open sSQLMpp, sConnMpprstMpp.MoveFirstDo While Not rstMpp.EOF' Bits I'm interested in Debug.Print "---------------------------------------------" Debug.Print "TaskId " & rstMpp("TaskId") Debug.Print "TaskName " & rstMpp("TaskName") Debug.Print "TaskStart " & rstMpp("TaskStart") Debug.Print "TaskFinish " & rstMpp("TaskFinish") Debug.Print "TaskOutlineLevel " & rstMpp("TaskOutlineLevel") Debug.Print "TaskOutlineNumber " & rstMpp("TaskOutlineNumber") Debug.Print vbCrLf' Everything For iCnt = 1 To 318  Debug.Print rstMpp(iCnt).Name & " " & rstMpp(iCnt) Next iCnt Debug.Print "---------------------------------------------" Debug.Print vbCrLf & vbCrLf & vbCrLf & vbCrLf rstMpp.MoveNextLooprstMpp.CloseEnd Sub
      

  2.   

    谢谢 blodfox777 ,我英文不行啊。