【发布时间】:2012-12-25 11:44:34
【问题描述】:
我在 Asp .Net Mvc3 中有一个应用程序,我正在使用 mpxj 库来生成一个项目文件(扩展名为 mpx)。但是这个文件不包含任务的日期,然后我想用 Ms Project 打开文件,然后用新格式保存(Ms 项目为任务创建日期)。细节是我想自动完成。可能吗?最好的方法是什么?
【问题讨论】:
标签: c# asp.net ms-project aspose mpxj
我在 Asp .Net Mvc3 中有一个应用程序,我正在使用 mpxj 库来生成一个项目文件(扩展名为 mpx)。但是这个文件不包含任务的日期,然后我想用 Ms Project 打开文件,然后用新格式保存(Ms 项目为任务创建日期)。细节是我想自动完成。可能吗?最好的方法是什么?
【问题讨论】:
标签: c# asp.net ms-project aspose mpxj
我知道在 Asp.NET 中不推荐 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 = "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;
【讨论】: