2013-03-16 61 views
1

我有以下代码:列表复制到的SpreadsheetGear Irange

 using (CPASEntities ctx = new CPASEntities()) 
     { 
      IWorksheet ws = wb.Worksheets[0]; 
      ws.Name = "Summary"; 
      var tsm = (from x in ctx.tblTimesheetMasters 
         where x.TSID == TSID 
         select new 
         { 
          TimesheetID = x.TSID, 
          Comments = x.TSComments, 
          Vendor = x.tblVendor.Vendor_Name, 
          StartDate = x.TSStartDate, 
          Author = x.TSAuthor, 
          Approver = x.TSApprover, 
          Override_Approver = x.TSOverrideApprover, 
          Status = x.tblTimesheetStatu.TSStatusDesc 
         } 
        ).ToList(); 
      SpreadsheetGear.IRange range = ws.Cells["A1"]; 
      // I want to copy the entire tsm list to this range, including headings. 

     } 

随着评论的状态,我希望把他们整个列表到WS工作起始于A1。如果使用不同的结构更容易,我会包含代码。 FWIW,将只有一个条目... TSID是主键。如果这很重要,我当然可以使用.FirstorDefault()构造。我认为这不重要。

回答

1

您的范围只有一个单元格。您需要一个足够大的范围来包含列表将填充的所有单元格。

要使用列表填充工作表,您可以这样做。

int iRow = 0; 
    int iCol = 0; 
    if (tsm.Count() > 0) 
    { 
     foreach (var prop in tsm[0].GetType().GetProperties()) 
     { 
     ws.Cells[iRow, iCol].Value = prop.Name; 
     iCol++; 
     } 
     iRow++; 
     foreach (var t in tsm) 
     { 
     iCol = 0; 
     foreach (var prop in t.GetType().GetProperties()) 
     { 
      ws.Cells[iRow, iCol].Value = prop.GetValue(t, null); 
      iCol++; 
     } 
     iRow++; 
     } 
    } 

如果你想要一个范围,你可以添加这一行。

SpreadsheetGear.IRange range = ws.Cells[0, 0, iRow - 1, iCol - 1]; 
+0

该问题与范围的定义无关。如果您使用我的定义(如图所示)(并从SSG网站复制...),使用IRange.copyfromDatatable方法一切正常。我想避免从EF设置一个数据表,因为这些结构是相似的,但看起来就像我必须做的。这比你提出的要容易得多(这当然会起作用....)谢谢。 – 2013-03-21 12:46:19

+0

对,如果IRange有copyFromList方法,那将会很好。另一种方法是使用ToDataTable方法将列表转换为数据表,如下所述:http://stackoverflow.com/questions/564366/convert-generic-list-enumerable-to-datatable。但是,这种方法与我给出的答案类似。 – Daniel 2013-03-21 16:21:54

+0

是的,我放弃了并使用了一个SQL源的DataTable。当我开始这个ASP.NET旅程时,我觉得我最好的策略是使用最新的技术,因为在我漫长的学习过程中它们将成为主流。那么,学习曲线确实很长,但技术(EF)显示出许多极端青春和有限接受的迹象。我学到了很多关于EF的知识,包括很多方法......大声笑。谢谢你的帮助.... – 2013-03-21 20:04:37