0

Asp .Net Mvc3にアプリケーションがあり、mpxjライブラリを使用してプロジェクトファイル(拡張子はmpx)を生成しています。ただし、このファイルにはタスクの日付が含まれていないため、Ms Projectでファイルを開き、新しい形式で保存します(Ms Projectはタスクの日付を作成します)。詳細は、自動的にやりたいということです。出来ますか?最善の方法は何ですか?

4

2 に答える 2

0

interop MsOfficeAsp.NETでは推奨されていないことを知っていますhttp://support.microsoft.com/kb/257757。しかし、日付を自動的に計算する必要があり、エラーを処理していて、を使用してMsProject Interopいます。これは私のコードです:

Microsoft.Office.Interop.MSProject.Application app = new Microsoft.Office.Interop.MSProject.Application();
app.DisplayAlerts = false;
app.AskToUpdateLinks = false;

app.FileOpenEx(
        Server.MapPath("") + "\\sample.mpx",
        false,
        Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
        PjPoolOpen.pjPoolReadWrite, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
         Microsoft.Office.Interop.MSProject.Project pj=app.ActiveProject;

app.CalculateAll(); //Para calcular las fechas

app.FileSaveAs(Server.MapPath("") + "\\sample.mpp",PjFileFormat.pjMPP, Type.Missing, Type.Missing,Type.Missing,           Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
于 2013-02-18T15:26:10.833 に答える
0

ライブラリをインポートしますMicrosoft.Office.Interop.MSProject

ASP.NETWebフォームからの私のコードを参照してください。ASPのどのバージョンでも同じことができます。ASP.NET Coreでも実行できますが、それによっていくつかの小さな変更が行われます。

  1. お気づきの方もいらっしゃると思いますが、ファイルをパスに保存しましたc:\temp

  2. 前面からファイルを変数としてfu_upload取得してプロセスを作成し、ファイルを保存して開いて読み取ります。

     ApplicationClass appclass = new ApplicationClass();
    
     object oMissing = System.Reflection.Missing.Value;
     object mppfile = @"c:\Temp";
     if (fu_Upload.PostedFile.FileName.Contains(@"\"))
         mppfile += fu_Upload.PostedFile.FileName.Substring(fu_Upload.PostedFile.FileName.LastIndexOf("\\"), fu_Upload.PostedFile.FileName.Length - fu_Upload.PostedFile.FileName.LastIndexOf('\\'));// fu_Upload.PostedFiles[0].FileName;
     else
         mppfile += @"\" + fu_Upload.PostedFile.FileName;
     fu_Upload.PostedFile.SaveAs(mppfile.ToString());
     object oFormat = "sample.mpx";
     object oReadOnly = true;
    
     PathFile = mppfile.ToString();
    
     UploadFileToFileSpacePage(fu_Upload, PathFile);
    
     appclass.DisplayAlerts = false;
     //    var projectdoc ;
     appclass.FileOpen(mppfile, oReadOnly, Microsoft.Office.Interop.MSProject.PjMergeType.pjDoNotMerge, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oFormat, oMissing, Microsoft.Office.Interop.MSProject.PjPoolOpen.pjPoolReadOnly, oMissing, oMissing, oMissing, oMissing);
    
     Microsoft.Office.Interop.MSProject.Project project = appclass.ActiveProject;
    
     return project;
    
于 2021-10-31T08:01:33.397 に答える