2013-03-16 63 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