Połączyć komórki za pomocą EPPlus?


94

Używam biblioteki EPPlus do odczytu / zapisu plików Excel: http://epplus.codeplex.com/

Próbuję po prostu scalić niektóre komórki podczas pisania dokumentu:

using (ExcelPackage pck = new ExcelPackage())
{
    //Create the worksheet
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");

    //Format the header for column 1-3
    using (ExcelRange rng = ws.Cells["A1:C1"])
    {
        bool merge = rng.Merge;
    }
}

Istnieje właściwość o nazwie Merge, która po prostu zwraca wartość true lub false. Pomyślałem, że może to scaliłoby komórki, ale tak nie jest.

Czy ktoś wie, jak to zrobić?

Odpowiedzi:


166

Musisz tego używać w ten sposób:

ws.Cells["A1:C1"].Merge = true;

zamiast:

using (ExcelRange rng = ws.Cells["A1:C1"])
{
    bool merge = rng.Merge;
}

Jak mogę przekazać parametry dynamiczne, aby scalić komórki w vb.net
Hari

Czy to zadziałałoby, gdybym chciał zrobić coś przeciwnego? Rozdziel komórki.
NikosV

Jak scalić kolumny na podstawie warunku?
Prashant Pimpale

1
@PrashantPimpale Nie rozumiem twojego pytania. Pamiętaj, że komórki w zakresie, który chcesz scalić, muszą przylegać do siebie.
Carles Company

2
Tylko jako dodatkowe informacje tutaj. Po scaleniu zostanie zachowana tylko najwyższa lewa wartość komórki (pozostałe wartości komórki zostaną zignorowane)
curiousBoy

77

Jeśli chcesz dynamicznie scalać komórki, możesz również użyć:

worksheet.Cells[FromRow, FromColumn, ToRow, ToColumn].Merge = true;

Wszystkie te zmienne są liczbami całkowitymi.


7

Możesz utworzyć metodę rozszerzenia:

public static void Merge(this ExcelRangeBase range)
{
    ExcelCellAddress start = range.Start;
    ExcelCellAddress end = range.End;
    range.Worksheet.Cells[start.Row, start.Column, end.Row, end.Column].Merge = true;
}

Możesz tego używać tak, jak w przypadku międzyoperacyjności:

range.Merge();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.