static void DoExport() { HPMUniqueID projId = HPMUtilities.FindProject(projectName); if (viewType == EHPMReportViewType.AgileBacklog) projId = SessionManager.Instance.Session.ProjectUtilGetBacklog(projId); else if (viewType == EHPMReportViewType.AllBugsInProject) projId = SessionManager.Instance.Session.ProjectUtilGetQA(projId); if (projId != null) { HPMString findString; if (searchSpec == SearchSpec.Report) { HPMUniqueID reportUserId = HPMUtilities.FindUser(reportUserName); if (reportUserId == null) throw new ArgumentException("Could not find the user " + reportUserName); HPMReport report = HPMUtilities.FindReport(projId, reportUserId, reportName); if (report == null) throw new ArgumentException("Could not find the report " + reportName + " for user " + reportUserName + " in project " + projectName); findString = SessionManager.Instance.Session.UtilConvertReportToFindString(report, projId, viewType); } else { findString = findQuery.Replace('\'', '"'); } HPMFindContext findContext = new HPMFindContext(); HPMFindContextData data = SessionManager.Instance.Session.UtilPrepareFindContext(findString, projId, viewType, findContext); HPMTaskEnum items = SessionManager.Instance.Session.TaskFind(data, EHPMTaskFindFlag.None); ExcelWriter excelWriter = new ExcelWriter(); if (items.m_Tasks.Length > 0) { EHPMProjectGetDefaultActivatedNonHidableColumnsFlag flag; if (viewType == EHPMReportViewType.ScheduleMainProject) flag = EHPMProjectGetDefaultActivatedNonHidableColumnsFlag.ScheduledMode; else if (viewType == EHPMReportViewType.AgileMainProject) flag = EHPMProjectGetDefaultActivatedNonHidableColumnsFlag.AgileMode; else flag = EHPMProjectGetDefaultActivatedNonHidableColumnsFlag.None; EHPMProjectDefaultColumn[] nonHidableColumns = SessionManager.Instance.Session.ProjectGetDefaultActivatedNonHidableColumns(projId, flag).m_Columns; if (viewType == EHPMReportViewType.ScheduleMainProject || viewType == EHPMReportViewType.AgileMainProject || viewType == EHPMReportViewType.AgileBacklog) { Array.Resize(ref nonHidableColumns, nonHidableColumns.Length + 1); nonHidableColumns[nonHidableColumns.Length - 1] = EHPMProjectDefaultColumn.ItemStatus; } EHPMProjectDefaultColumn[] activeBuiltinColumns = SessionManager.Instance.Session.ProjectGetDefaultActivatedColumns(projId).m_Columns; HPMProjectCustomColumnsColumn[] activeCustomColumns = SessionManager.Instance.Session.ProjectCustomColumnsGet(projId).m_ShowingColumns; ExcelWriter.Row row = excelWriter.AddRow(); foreach (EHPMProjectDefaultColumn builtinCol in nonHidableColumns) row.AddCell(HPMUtilities.GetColumnName(builtinCol)); foreach (EHPMProjectDefaultColumn builtinCol in activeBuiltinColumns) row.AddCell(HPMUtilities.GetColumnName(builtinCol)); foreach (HPMProjectCustomColumnsColumn customColumn in activeCustomColumns) row.AddCell(HPMUtilities.GetColumnName(projId, customColumn)); HPMColumnTextOptions options = new HPMColumnTextOptions(); options.m_bForDisplay = true; foreach (HPMUniqueID item in items.m_Tasks) { string description = SessionManager.Instance.Session.TaskGetDescription(item); HPMUniqueID itemRef; if (viewType == EHPMReportViewType.ScheduleMainProject || viewType == EHPMReportViewType.AgileMainProject) { itemRef = SessionManager.Instance.Session.TaskGetProxy(item); if (!itemRef.IsValid()) itemRef = SessionManager.Instance.Session.TaskGetMainReference(item); } else { itemRef = SessionManager.Instance.Session.TaskGetMainReference(item); } row = excelWriter.AddRow(); foreach (EHPMProjectDefaultColumn builtinCol in nonHidableColumns) { HPMColumn column = new HPMColumn(); column.m_ColumnType = EHPMColumnType.DefaultColumn; column.m_ColumnID = (uint)builtinCol; row.AddCell(SessionManager.Instance.Session.TaskRefGetColumnText(itemRef, column, options)); } foreach (EHPMProjectDefaultColumn builtinCol in activeBuiltinColumns) { HPMColumn column = new HPMColumn(); column.m_ColumnType = EHPMColumnType.DefaultColumn; column.m_ColumnID = (uint)builtinCol; row.AddCell(SessionManager.Instance.Session.TaskRefGetColumnText(itemRef, column, options)); } foreach (HPMProjectCustomColumnsColumn customColumn in activeCustomColumns) { string displayString; string dbValue = SessionManager.Instance.Session.TaskGetCustomColumnData(item, SessionManager.Instance.Session.UtilGetColumnHash(customColumn)); if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.DateTime || customColumn.m_Type == EHPMProjectCustomColumnsColumnType.DateTimeWithTime) { ulong ticksSince1970 = SessionManager.Instance.Session.UtilDecodeCustomColumnDateTimeValue(dbValue)*10; DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddTicks((long)ticksSince1970); if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.DateTime) displayString = dateTime.ToShortDateString(); else displayString = dateTime.ToString(); } else if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.Resources) { displayString =""; HPMResourceDefinitionList resourceList = SessionManager.Instance.Session.UtilDecodeCustomColumnResourcesValue(dbValue); for (int i = 0; i < resourceList.m_Resources.Length; i += 1) { HPMResourceDefinition resourceDefinition = resourceList.m_Resources[i]; switch (resourceDefinition.m_GroupingType) { case EHPMResourceGroupingType.AllProjectMembers: displayString += "All Project Members"; break; case EHPMResourceGroupingType.Resource: displayString += HPMUtilities.GetUserName(resourceDefinition.m_ID); break; case EHPMResourceGroupingType.ResourceGroup: displayString += HPMUtilities.GetGroupName(resourceDefinition.m_ID); break; } if (i < resourceList.m_Resources.Length - 1) displayString += ", "; } } else if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.DropList) { displayString = HPMUtilities.DecodeDroplistValue(dbValue, customColumn.m_DropListItems); } else if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.MultiSelectionDropList) { displayString = ""; string[] dbValues = dbValue.Split(new char[] { ';' }); for (int i = 0; i < dbValues.Length; i += 1) { displayString += HPMUtilities.DecodeDroplistValue(dbValues[i], customColumn.m_DropListItems); if (i < dbValues.Length - 1) displayString += ", "; } } else displayString = dbValue; row.AddCell(displayString); } } } excelWriter.SaveAsOfficeOpenXml(outputFileName); } else throw new ArgumentException("Could not find the project " + projectName); }
/// <summary> /// Gets values from Hansoft and updates data model. /// </summary> private void UpdateRow(HPMUniqueID taskID, HPMUniqueID projectID, HPMWIColumn column, DataRow drow, bool isForDisplay) { // get values for multi choice columns by their respective methods... string id = Convert.ToString((HPMUInt32)column.Column.m_ColumnID); if (column.Column.m_ColumnID == (int)EHPMProjectDefaultColumn.BugPriority) { drow[id] = Convert.ToInt32(m_VirtSession.TaskGetAgilePriorityCategory(taskID)); } else if (column.Column.m_ColumnID == (int)EHPMProjectDefaultColumn.Risk) { drow[id] = Convert.ToInt32(m_VirtSession.TaskGetRisk(taskID)); } else if (column.Column.m_ColumnID == (int)EHPMProjectDefaultColumn.Severity) { drow[id] = Convert.ToInt32(m_VirtSession.TaskGetSeverity(taskID)); } else if (column.Column.m_ColumnID == (int)EHPMProjectDefaultColumn.Confidence) { drow[id] = Convert.ToInt32(m_VirtSession.TaskGetConfidence(taskID)); } else if ((column.Column.m_ColumnType == EHPMColumnType.CustomColumn) && (column.Type == (int)EHPMProjectCustomColumnsColumnType.DropList)) { string value = m_VirtSession.TaskGetCustomColumnData(taskID, (uint)column.Column.m_ColumnID); if (value == "") drow[id] = 0; else drow[id] = Convert.ToInt32(value); } else { // and use TaskRefGetColumnText to get formatted value for remaining columns HPMColumnTextOptions options = new HPMColumnTextOptions(); options.m_bExpandResources = false; options.m_bDisplayUnits = isForDisplay; options.m_bForDisplay = isForDisplay; options.m_bMyWork = false; options.m_bNeedFullProjectPath = false; options.m_bOnlyFirstResource = false; options.m_bNeedSprintInSubProjectPath = false; options.m_bSeparateSubProjectPath = false; HPMUniqueID taskrefid = m_VirtSession.TaskGetMainReference(taskID); HPMString value = m_VirtSession.TaskRefGetColumnText(taskrefid, column.Column, options); drow[id] = value; } }