ผสานเซลล์โดยใช้ EPPlus?


94

ฉันใช้ไลบรารี EPPlus เพื่ออ่าน / เขียนไฟล์ Excel: http://epplus.codeplex.com/

ฉันกำลังพยายามผสานเซลล์บางเซลล์เมื่อเขียนเอกสาร:

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

มีคุณสมบัติที่ชื่อ Merge ที่เพียงแค่คืนค่าจริงหรือเท็จ ฉันคิดว่านั่นอาจจะรวมเซลล์ แต่ก็ไม่ได้

ใครทราบวิธีการทำเช่นนี้

คำตอบ:


166

คุณต้องใช้มันดังนี้:

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

แทน:

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

ฉันจะส่งพารามิเตอร์แบบไดนามิกเพื่อผสานเซลล์ใน vb.net ได้อย่างไร
ฮาริ

จะได้ผลหรือไม่ถ้าฉันต้องการทำสิ่งที่ตรงกันข้าม ยกเลิกการผสานเซลล์
NikosV

ฉันจะรวมคอลัมน์ตามเงื่อนไขได้อย่างไร
Prashant Pimpale

1
@PrashantPimpale ฉันไม่เข้าใจคำถามของคุณ โปรดทราบว่าเซลล์ในช่วงที่คุณต้องการผสานจะต้องอยู่ติดกัน
บริษัท Carles

2
เป็นข้อมูลเพิ่มเติมที่นี่ เฉพาะค่าเซลล์ด้านซ้ายบนสุดเท่านั้นที่จะถูกเก็บไว้หลังจากผสาน (ค่าที่เหลือของเซลล์จะถูกละเว้น)
อยากรู้อยากเห็นBoy

77

หากคุณต้องการผสานเซลล์แบบไดนามิกคุณยังสามารถใช้:

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

ตัวแปรทั้งหมดนี้เป็นจำนวนเต็ม


7

คุณสามารถสร้างวิธีการขยาย:

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

คุณสามารถใช้สิ่งนี้ได้เช่นเดียวกับการทำงานร่วมกัน:

range.Merge();
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.