如何从Excel导入带有“多对多”直接链接的TFS工作项

时间:2011-07-19 00:00:31

标签: excel tfs many-to-many hyperlink import-from-excel

我有一个 Excel 从ReqPro创建的需求电子表格,我需要将其导入到TFS中。每个要求都有一个链接来自链接到字段,这两个字段都可以包含多个条目。由于链接关系多对多,因此需要使用 direct-link 类型(不是父子)。我以为我可以使用Excel 2010导入它,但是当在Excel中使用直接链接打开查询时,结果是 flat 并且不包含链接信息。我有超过10,000个这些要求导入数千个链接所以我需要自动化这个。有没有一种简单的方法可以将多对多直接链接导入TFS?

1 个答案:

答案 0 :(得分:1)

很抱歉,这是设计使然,请参阅microsoft connect http://connect.microsoft.com/VisualStudio/feedback/details/667973/tfs-2010-work-items-with-direct-links-query-goes-to-excel-as-a-flat-list#中提到的此错误。

然而,似乎有几种解决方法,

  1. 如果只需查看查询结果,您可以通过电子邮件或查看来自Sharepoint门户的结果作为报告。 (由于这显然是“按设计”,任何人都可以说设计不一致吗?)

  2. 如果需要编辑结果,也许您可​​以将查询设为“工作树项目”类型查询。

  3. 使用TFS SDK正确制作Excel文档。我做了一些调查,这是可行的,但由于我们只需要查看,#1就足够了。使生成的文档可编辑可能需要一些时间。

  4. PS - 我可以确认我已经尝试将一个工作项目项目导出为ex​​cel并保持链接结构。另请参阅此MSDN文章,了解如何执行此操作http://msdn.microsoft.com/en-us/library/dd286627.aspx

    但如果您想使用TFS API,我将在下面添加一些psudo代码, 1.使用Open XML SDK 2.0 for Microsoft Office连接到大型Excel并阅读它http://msdn.microsoft.com/en-us/library/gg575571.aspx 2.使用TFS API以编程方式创建工作项 3.在工作项http://blogs.microsoft.co.il/blogs/shair/archive/2010/02/27/tfs-api-part-22-create-link-between-work-item-parent-child-etc.aspx

    之间创建链接
    private void ReadInformationFromExcelAndCreateLinkWorkItems()
        {
            using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(@"FilePath\fileName", false))
            {
                WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
                WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
                SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
                string text;
                int WorkItemId = 0;
                foreach (Row r in sheetData.Elements<Row>())
                {
                    foreach (Cell c in r.Elements<Cell>())
                    {
                        // Loop through each row till you complete one logical block of work item Links.
                        var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("TfsUrl"));
                        var wiStore = tfs.GetService<WorkItemStore>();
    
                        WorkItem wi = new WorkItem(new WorkItemType // Create a new work item of the type as in your excel)
                        // associate all column cell values to the work item
                        wi.Save(); 
                        // This should give you an ID now
                        WorkItemId = wi.Id;
    
                    }
                }
            }
        }
    

    HTH 干杯,塔伦