0

我在 Asp .Net Mvc3 中有一个应用程序,我正在使用 mpxj 库来生成一个项目文件(扩展名为 mpx)。但是这个文件不包含任务的日期,然后我想用 Ms Project 打开文件,然后用新格式保存(Ms 项目为任务创建日期)。细节是我想自动完成。可能吗?什么是最好的方法?

4

2 回答 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.NET Web 窗体中查看我的代码。您可以对任何版本的 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 回答