2016-05-19 11 views
-1

Ich muss die Zeilen von Excel mit Tabellenkalkulation Zahnradsteuerungen zusammenführen ist es möglich. Nur bestimmte Zeilen von einzelnen SpalteZusammenführen von Zeilen in einzelne mit Tabellenkalkulationsprogramm beim Export nach Excel

All detail is being included in this screencast

Die Änderungen, die von mir gemacht wurde, ist

  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(); 

Was hinzugefügt werden sollte?

Antwort

0

Sie können Zellen zusammenführen, indem Sie IRange aufrufen. Merge() auf die gewünschten Zellen. Beispiel:

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

UPDATE: Sie haben gefragt, wie dynamisch eine Reihe von Zellen in einer Spalte basierend auf benachbarten Reihen verschmelzen, die den gleichen Wert haben. Um dies zu erreichen, müssten Sie jede Zeile in dieser Spalte durchgehen und den Wert jeder Zelle mit dem vorherigen Wert vergleichen. Wenn Sie die Spalte durchgehen, wird sie gegebenenfalls zusammengeführt.

Ich biete unten einen Beispielcode an, der eine Möglichkeit zeigt, wie man das machen könnte (es gibt sicherlich viele andere Möglichkeiten). Ich musste einige Annahmen über Ihre zugrunde liegenden Daten und Anforderungen machen, so dass einige Änderungen an Ihrem Ende erforderlich sein könnten. Beachten Sie die Verwendung einiger praktischer Methoden unter der IRange Schnittstelle (siehe die IRange. Intersect (...)/Subtract (...)/Union (...) Methoden), mit denen Sie zwei IRanges "interagieren" können, um ein zu erstellen neue dritte IRange.

+0

es ist in Ordnung, aber ich habe dynamische Zeilen, die wie im obigen Beispiel erwähnt werden sollten, was im ersten Beispiel anstelle von A7 und A8 übergeben werden sollte, danke. –