我想显示从29/5到30/6但是在间隔中的所有日子的工作时间。它包含星期六和星期日(非工作日)。我使用TimeScaleData
,但它在看到非工作日时自动停止。我尝试将(1)添加到结束日,但仍然停止,所以我无法正确显示工作时间。如何在TimeScaleData中跳过日期(读取mpp文件)?
Microsoft.Office.Interop.MSProject.Application app = new Microsoft.Office.Interop.MSProject.Application();
app.FileOpenEx(Path, 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;
foreach(Resource re in pj.Resources)
{
foreach (Assignment assign in re.Assignments)
{
double h = 0;
var tsvs = assign.TimeScaleData("5/29/2017", "7/1/2017", MSProject.PjAssignmentTimescaledData.pjAssignmentTimescaledWork, MSProject.PjTimescaleUnit.pjTimescaleDays, 1);
try
{
foreach (TimeScaleValue tsv in tsvs)
{
for (int i = 0; i < totalday ; i++)
{
h += Convert.ToDouble(tsv.Value); //sum all value
}
}
}
catch { }
}
}
它的工作原理。臭虫和臭虫,我感到压力:v:v非常感谢瑞秋。 – gggg
嗨@Rachel,我在VBA中研究和检测函数Val。该帖子说:“”tsv.Value为对象日期范围外的时间片返回一个空字符串(“”)。 Val(tsv.Value)将空字符串转换为零,这更有用“”。我理解Val()类似于C#中的Convert.ToDouble,但是当我使用它时会看到上面的错误。 – gggg
使用前检查'tsv.Value'的数据类型。看到[这个SO帖子的类型检查在C#](https://stackoverflow.com/questions/983030/type-checking-typeof-gettype-oris)。 –