Asp .Net Mvc3にアプリケーションがあり、mpxjライブラリを使用してプロジェクトファイル(拡張子はmpx)を生成しています。ただし、このファイルにはタスクの日付が含まれていないため、Ms Projectでファイルを開き、新しい形式で保存します(Ms Projectはタスクの日付を作成します)。詳細は、自動的にやりたいということです。出来ますか?最善の方法は何ですか?
質問する
2311 次
2 に答える
0
interop
MsOffice
Asp.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でも実行できますが、それによっていくつかの小さな変更が行われます。
お気づきの方もいらっしゃると思いますが、ファイルをパスに保存しました
c:\temp
前面からファイルを変数として
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 に答える