2017-05-09 2 views
2

Ich habe ein Excel-Arbeitsblatt wie nachstehend (nur ein Beispiel)Wie erstellt man eine Excel-Zeile und fügt sie in den Excel-Bereich ein?

enter image description here

I ein Microsoft.Office.Interop.Excel.Range Objekt erstellt habe den Bereich von Item1 auf Kategorie5 Bezug (ausgewählten Zellen in der obigen Bild).

Jetzt möchte ich eine neue Zeile erstellen (Market1, Market2, Market3, Market4, Market5) und sie unterhalb des Bereichs, dh unterhalb der Kategoriezeile hinzufügen.

Ich verwende die Microsoft.Office.Interop.Excel Klassen zum ersten Mal. Kann mir jemand helfen herauszufinden, wie man erstellt und eine neue Zeile zu einem bestehenden Bereich Objekt hinzufügen. Hier

ist der Code, den ich geschrieben habe -

public class Class1 
{ 
    static void Main(string[] args) 
    { 
     Application appExcel = new Application(); 


     WorkBook workBook = appExcel.Workbooks.Open(@"C:\Data.xlsx", true, false); 
     workSheet = (Worksheet)workBook.Sheets["Export"]; 

     Range usedRange = workSheet.UsedRange; 

     Range itemCatRange = GetSection(usedRange, "Item1","Group1"); //Gets the selected range as shown in pic 

     //Here I want to create a new row of cells and add the newly created row at the end of the above range "itemCatRange" 
    } 

    private static Range GetSection(Range usedRange, string startHeader, string endHeader) 
    { 
     string str = string.Empty; 
     string end = String.Empty; 

     Range algAlmRange; 
     foreach (Range row in usedRange.Rows) 
     { 

      object firstColumnValue = row.Columns.Value2[1, 1]; 
      if (firstColumnValue != null) 
      { 
       if (firstColumnValue.ToString() == startHeader) 
       { 
        str = row.Address; 
       } 
       else if (firstColumnValue.ToString() == endHeader) 
       { 
        end = row.Address; 
       } 

      } 
     } 

     algAlmRange = workSheet.Range[str, end]; 
     return algAlmRange; 
    } 
} 
+0

Diese könnten helfen: [Excel Interop - Einfügen und Hinzufügen von Daten nach Zeile] (http://stackoverflow.com/questions/30495407/excel-interop-insert-add-data-by-row), [Excel Zeilen einfügen ] (http://stackoverflow.com/questions/13418776/excel-insert-rows-not-add) – FortyTwo

+0

Haben Sie etwas versucht? Bitte teilen Sie Ihren Code – FortyTwo

+0

Vielen Dank mohammed für Ihre Antwort. Ich habe den Code dem Beitrag hinzugefügt. – manjuv

Antwort

1

So etwas wie

Range itemCatRange = GetSection(usedRange, "Item1","Group1"); 
Range lastRow = itemCatRange[itemCatRange.Rows, 1].EntireRow; 
lastRow.Insert(XlDirection.xlDown, XlInsertFormatOrigin.xlFormatFromLeftOrAbove); 

Sie müssen eine weitere Zeile nach unten gehen kann, oder xlUp verwenden. Ich habe das nicht wirklich versucht.

+0

Vielen Dank reasra :) Diese Lösung funktioniert für das Einfügen einer leeren Zeile am Ende des Bereichs, aber ich möchte eine neue Zeile erstellen und am Ende des Bereichs hinzufügen. – manjuv

+0

vielleicht 'Bereich nextRow = workSheet.Cells [lastRow.Row + 1, 1] .EntireRow' und dann' nextRow.Insert' ... aber ja, ich glaube nicht, dass 'xlUp' korrekt funktioniert. – reasra

Verwandte Themen