我在 Asp .Net Mvc3 中有一个应用程序,我正在使用 mpxj 库来生成一个项目文件(扩展名为 mpx)。但是这个文件不包含任务的日期,然后我想用 Ms Project 打开文件,然后用新格式保存(Ms 项目为任务创建日期)。细节是我想自动完成。可能吗?什么是最好的方法?
问问题
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.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;
于 2021-10-31T08:01:33.397 回答