Hợp nhất các ô bằng EPPlus?


93

Tôi đang sử dụng thư viện EPPlus để đọc / ghi tệp Excel: http://epplus.codeplex.com/

Tôi đang cố gắng hợp nhất một số ô khi viết tài liệu:

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;
    }
}

Có một thuộc tính tên là Merge chỉ trả về true hoặc false. Tôi nghĩ có thể điều đó sẽ Hợp nhất các ô, nhưng nó không.

Bất cứ ai biết làm thế nào để làm điều này?

Câu trả lời:


164

Bạn phải sử dụng nó như thế này:

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

thay vì:

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

Làm thế nào tôi có thể vượt qua các thông số động sáp nhập các tế bào trong vb.net
Hari

Điều này có hiệu quả nếu tôi muốn làm ngược lại? Hủy hợp nhất các ô.
NikosV

Làm cách nào để hợp nhất các cột trên cơ sở điều kiện?
Prashant Pimpale

1
@PrashantPimpale Tôi không hiểu câu hỏi của bạn. Hãy nhớ rằng các ô trong phạm vi bạn muốn hợp nhất cần phải liền kề.
Công ty Carles

2
Chỉ là một thông tin bổ sung ở đây. Chỉ giá trị ô trên cùng bên trái sẽ được giữ lại sau khi hợp nhất (phần còn lại của các giá trị ô sẽ bị bỏ qua)
tò mòBoy

76

Nếu bạn muốn hợp nhất các ô theo cách động, bạn cũng có thể sử dụng:

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

Tất cả các biến này là số nguyên.


7

Bạn có thể tạo một phương thức mở rộng:

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;
}

Bạn có thể sử dụng điều này như bạn làm qua tương tác:

range.Merge();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.