[英]how can i open a mpx project file and then save it as mpp project?
我在 Asp .Net Mvc3 中有一个应用程序,我正在使用 mpxj 库来生成一个项目文件(扩展名为 mpx)。 但是这个文件不包含任务的日期,然后我想用 Ms Project 打开文件,然后用新格式保存(Ms project 为任务创建日期)。 细节是我想自动完成。 是否可以? 什么是最好的方法?
我知道不推荐使用MsOffice
中的interop
MsOffice
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);
导入库Microsoft.Office.Interop.MSProject
。
从 ASP.NET Web 窗体查看我的代码。 您可以对任何版本的 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 = "MSProject.mpp"; 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.