我现在在做project数据导入导出,现在我已近按照技术文档把数据正确的导入到了我们产品中的数据库中了,但是有一个问题很让我头痛: #region 把Project中的数据读取出来放入集合中只取WBS
/// <summary>
/// 把Project中的数据读取出来放入集合中只取WBS
/// </summary>
/// <param name="file">Project文件的路径(.mpp文件)</param>
/// <returns>返回Project中所有WBS数据的集合</returns>
public static ArrayList GetAllWbs(string file)
{
Microsoft.Office.Interop.MSProject.ApplicationClass app = new ApplicationClass();
ArrayList list = new ArrayList();
try
{
Object missing = Type.Missing;
app.FileOpen(file, false, missing, missing, missing, missing, missing, missing, missing, missing, missing,
PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
foreach (Project proj in app.Projects)
{
foreach (Task task in proj.Tasks)
{
if (task != null)
{
ProjWbsEntity pwe = new ProjWbsEntity(); //查询本条信息,有没有子任务,如果没有就不添加到集合中
Tasks ts = task.OutlineChildren; if (ts.Count == 0)
{
continue;
}
pwe.status_code = (1).ToString();
pwe.est_wt = Convert.ToInt32(task.Priority);
pwe.seq_num = task.ID;
pwe.wbs_short_name = task.OutlineNumber;
pwe.wbs_name = task.Name;
pwe.target_start_date = Convert.ToDateTime(task.Start);
pwe.target_end_date = Convert.ToDateTime(task.Finish);
//保存project中层的列
pwe.outliveNumber = task.OutlineNumber;
//保存project中原id
pwe.preId = task.ID;
pwe.proj_node_flag = "N";
pwe.sum_data_flag = "N"; list.Add(pwe);
}
else {
continue;
}
}
}
}
catch (Exception ex)
{
DiagnosticsManage.KillProject();
HttpContext.Current.Response.Write(ex.Message.ToString());
}
finally {
DiagnosticsManage.KillProject();
}
return list;
这个是一个取wbs的方法,但我一运行Microsoft.Office.Interop.MSProject.ApplicationClass app = new ApplicationClass();
这行代码有时候就报错,有时候又不报错,如果我在这行代码上加上断点,就不报错了,我都不知道怎么调式。大家帮我想想办法,我按照网上有的方法比如DOCM配置中也把Microsoft Project Basic-右键属性中安全和标识中基本上都按照了网上说的设置了,但还是报错。project2003我也卸载了重装了N遍了,还是报错。大家帮我看看这个问题怎么办?
谢谢大家啊……我比较急,大家帮帮我啊……谢谢大家了啊……
/// <summary>
/// 把Project中的数据读取出来放入集合中只取WBS
/// </summary>
/// <param name="file">Project文件的路径(.mpp文件)</param>
/// <returns>返回Project中所有WBS数据的集合</returns>
public static ArrayList GetAllWbs(string file)
{
Microsoft.Office.Interop.MSProject.ApplicationClass app = new ApplicationClass();
ArrayList list = new ArrayList();
try
{
Object missing = Type.Missing;
app.FileOpen(file, false, missing, missing, missing, missing, missing, missing, missing, missing, missing,
PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
foreach (Project proj in app.Projects)
{
foreach (Task task in proj.Tasks)
{
if (task != null)
{
ProjWbsEntity pwe = new ProjWbsEntity(); //查询本条信息,有没有子任务,如果没有就不添加到集合中
Tasks ts = task.OutlineChildren; if (ts.Count == 0)
{
continue;
}
pwe.status_code = (1).ToString();
pwe.est_wt = Convert.ToInt32(task.Priority);
pwe.seq_num = task.ID;
pwe.wbs_short_name = task.OutlineNumber;
pwe.wbs_name = task.Name;
pwe.target_start_date = Convert.ToDateTime(task.Start);
pwe.target_end_date = Convert.ToDateTime(task.Finish);
//保存project中层的列
pwe.outliveNumber = task.OutlineNumber;
//保存project中原id
pwe.preId = task.ID;
pwe.proj_node_flag = "N";
pwe.sum_data_flag = "N"; list.Add(pwe);
}
else {
continue;
}
}
}
}
catch (Exception ex)
{
DiagnosticsManage.KillProject();
HttpContext.Current.Response.Write(ex.Message.ToString());
}
finally {
DiagnosticsManage.KillProject();
}
return list;
这个是一个取wbs的方法,但我一运行Microsoft.Office.Interop.MSProject.ApplicationClass app = new ApplicationClass();
这行代码有时候就报错,有时候又不报错,如果我在这行代码上加上断点,就不报错了,我都不知道怎么调式。大家帮我想想办法,我按照网上有的方法比如DOCM配置中也把Microsoft Project Basic-右键属性中安全和标识中基本上都按照了网上说的设置了,但还是报错。project2003我也卸载了重装了N遍了,还是报错。大家帮我看看这个问题怎么办?
谢谢大家啊……我比较急,大家帮帮我啊……谢谢大家了啊……
这样试试
后面加一句如下代码System.Threading.Thread.Sleep(5000)