2016-05-19 1 views
-1

スプレッドシートのギアコントロールを使用してExcelの行をマージする必要があります。単一の列の特定の行のみExcelにエクスポートするときにスプレッドシートギアを使用して行を1つにマージする

All detail is being included in this screencast

私が行われている変更を追加する必要がありますどのような

  DataTable dt = (DataTable)ViewState["dtGrid"] 

      System.Random rd = new System.Random(DateTime.Now.Millisecond); 
      int MyValue = rd.Next(1000000, 99999999); 
      sUniqueName = MyValue.ToString(); 

      // Create a new workbook. 
      SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(); 
      SpreadsheetGear.IRange cells = workbook.Worksheets[0].Cells; 

      cells.CopyFromDataTable(dt, SpreadsheetGear.Data.SetDataFlags.None); 


      cells.Rows[0, 0, 0, 51].Interior.Color = System.Drawing.Color.Navy; 
      cells.Rows[0, 0, 0, 51].Font.Color = System.Drawing.Color.White; 
      cells["A:R"].Columns.AutoFit(); 

      string filename = string.Format("{0}-{1}-{2}", "AOMIndoorInventoryReport", DateTime.Now.ToString("MM-dd-yy"), sUniqueName); 
      Response.Clear(); 
      Response.ContentType = "application/vnd.ms-excel"; 
      Response.AddHeader("Content-Disposition", "attachment; filename=" + filename + ".xls"); 
      workbook.SaveToStream(Response.OutputStream, SpreadsheetGear.FileFormat.Excel8); 
      Response.End(); 

のですか?

答えて

0

セルをマージするには、IRangeを呼び出します。 Merge()を所望の細胞に加える。例:

cells["A7:A8"].Merge(); 
cells[8, 0, 22, 0].Merge(); 

がUPDATE: あなたは動的に同じ値を持つ列に隣接する行に基づいてセルの範囲をマージする方法を求めてきました。これを達成するには、この列の各行をループし、各セルの値を前の値と比較し、列を下ろすときに合併する必要があります。

私はいくつかのサンプルコードを提供しています。これはあなたがこれについて行くかもしれない1つの方法を示しています(確かに他の多くの方法があります)。私は、基礎となるデータと要件についていくつかの仮定をしなければならなかったので、あなたの最終的な修正が必要になるかもしれません。 IRangeインタフェース(IRange。Intersect(...)/ Subtract(...)/ Union(...)メソッドを参照)の下で便利なメソッドを使用して、2つのIRangを "相互作用させて"新しい第3のIRange。

+0

私は上記の例ではA7とA8の代わりに最初の例で渡す必要がありますようにマージする必要があります動的行があります。 –

関連する問題