Exceljs hợp nhất các ô một cách linh hoạt

Để cung cấp cho bạn một yêu cầu chi tiết, tôi muốn có một phương thức hợp nhất, phương thức này sẽ lấy một dải ô làm đầu vào, xác định xem có ô nào đã được hợp nhất chưa [nếu có], sau đó tìm dải ô đã hợp nhất từ ​​ô và hủy hợp nhất và hợp nhất nó

Bạn có thể giúp tôi với mã nguồn thực hiện điều này - mặc dù trong C# không?

Mã giả bên dưới -

void OverloadedMerge[Phạm vi mục tiêuMergeRange]

{

-- Lặp lại và kiểm tra xem có bất kỳ ô nào được hợp nhất không

--- nếu có, hủy hợp nhất phạm vi ô đã được hợp nhất

--- thực hiện hành động này để toàn bộ targetMergeRange không có hợp nhất nội bộ

-- Thực hiện targetMergeRange bắt buộc
}

Cảm ơn

Cảm ơn vì sự trả lời. làm cách nào để kiểm tra xem một phạm vi có được hợp nhất hay không?

giả sử tôi có một phương thức và tôi nhận được một phạm vi làm tham số

void testmethod[Phạm vi]
{

nếu [phạm vi. [????? được hợp nhất]{

phạm vi. unMerge[];
}
}

Thay vì tạo hai lần hợp nhất, vấn đề của tôi là phạm vi đầu tiên đã được hợp nhất và tôi muốn tự động xóa phạm vi đầu tiên [r1] và thêm r2 để nó không đưa ra bất kỳ ngoại lệ nào. xin lưu ý rằng tôi không biết kích thước của r1

Vì vậy, tôi nên lặp qua tất cả các phạm vi trong trang tính và tìm hiểu xem phạm vi đó có giao với phạm vi mới hiện tại của tôi hay không, đồng thời kiểm tra xem phạm vi trước đó có các ô được hợp nhất hay không và nếu có thì hãy thêm phạm vi mới [r2] vào ví dụ này

một số mã tôi đã viết dựa trên đề xuất của bạn và nó không hoạt động. Ở đây, formatRange là tham số đi kèm với phương thức này

for [int rangeCount = 0; rangeCount < ReportCells. Các dãy. Đếm;

{

nếu [định dạngPhạm vi. IsIntersect[ReportCells. Phạm vi[rangeCount]]]

{

// Nên xác thực xem ReportCells. Phạm vi [rangeCount] được hợp nhất? . để nó không hạn chế hợp nhất phạm vi mới - ĐANG CHỜ

// Tôi không thấy lý do để kết hợp hai phạm vi này. bởi vì các ô báo cáo. phạm vi tiếp tục tăng trong khi gỡ lỗi vòng lặp

danh sách = formatRange. Liên minh [Báo cáoCells. Phạm vi [rangeCount]];

foreach [Phạm vi phạm vi trong danh sách]

{

nếu [phạm vi. = không]

// Yêu cầu của tôi là hủy hợp nhất phạm vi trước đó để phạm vi mới hoạt động

phạm vi. UnMerge[];

}

}

}

Yellow one – merge range 1 [E5:F5]

Màu đỏ – hợp nhất phạm vi 2[E6. H6]

Đã đính kèm bảng tính đã hợp nhất và cả ảnh chụp màn hình

Giả sử, tôi muốn hợp nhất giữa E4. F8, tôi muốn tự động loại bỏ hợp nhất màu vàng và hợp nhất màu đỏ để hợp nhất cho E4. F8 hoạt động. Trong trường hợp này, tôi biết rằng chúng tôi chỉ có hai sự hợp nhất xung đột, nhưng trong trường hợp của tôi, có thể có nhiều sự hợp nhất xung đột và tôi phải xác định nó một cách linh hoạt và giải quyết nó

Nếu bạn làm vba nó sẽ hoạt động tốt. Mã được đánh dấu màu đỏ sẽ hoạt động tốt

Mã vba như sau –

Macro phụ1[]

'

' Vĩ mô1 Vĩ mô

'

'

Với lựa chọn

Căn ngang = xlCenter

Căn dọc = xlBottom

WrapText = Sai

Định hướng = 0

AddIndent = Sai

Mức thụt lề = 0

ShrinkToFit = Sai

ReadingOrder = xlContext

Hợp nhấtCells = Sai

Kết thúc với

Lựa chọn. hợp nhất

Phạm vi ["E6. H6"]. Lựa chọn

Với lựa chọn

Căn ngang = xlCenter

Căn dọc = xlBottom

WrapText = Sai

Định hướng = 0

AddIndent = Sai

Mức thụt lề = 0

ShrinkToFit = Sai

ReadingOrder = xlContext

Hợp nhấtCells = Sai

Kết thúc với

Lựa chọn. hợp nhất

Phạm vi ["C5. F5"]. Lựa chọn

Với lựa chọn. Nội địa

Hoa văn = xlSolid

PatternColor Index = xlAutomatic

Màu = 65535

TintAndShade = 0

MẫuTintAndShade = 0

Kết thúc với

Phạm vi ["E6. H6"]. Lựa chọn

Với lựa chọn. Nội địa

Hoa văn = xlSolid

PatternColor Index = xlAutomatic

Màu = 255

TintAndShade = 0

MẫuTintAndShade = 0

Kết thúc với

Phạm vi ["E4. F8"]. Lựa chọn

Với lựa chọn

Căn ngang = xlCenter

Căn dọc = xlBottom

WrapText = Sai

Định hướng = 0

AddIndent = Sai

Mức thụt lề = 0

ShrinkToFit = Sai

ReadingOrder = xlContext

Hợp nhấtCells = Sai

Kết thúc với

Lựa chọn. hợp nhất

kết thúc phụ

mã C# –

công khai ReportFormatter[ chuỗi tệp]

{

Báo cáo Sổ làm việc = mới Sổ làm việc [tệp];

ReportWorksheet = ReportWorkbook. Trang tính[ "Trang tính 1" ];

ReportCells = ReportWorksheet. Tế bào;

}

công khai vô hiệu FormatMethod[]

{

Phạm vi mergeRange = ReportCells. CreateRange[ "E4" , "F8" ];

hợp nhấtPhạm vi. Hợp nhất [];

Báo cáo Sổ làm việc. Lưu[ "C. \bóng đèn tròn. xls" ];

}

Xin lưu ý rằng cách giải quyết mẫu trước đây của bạn dựa trên ô trước đó và bạn kiểm tra xem nó có được hợp nhất không

Chủ Đề