เรามีความยินดีที่จะแจ้งการปล่อย GroupDocs.Merger for .NET v26.9 ซึ่งพร้อมให้ใช้งานตั้งแต่ September 2026 รุ่นนี้ได้เพิ่มการรวมแถวของสเปรดชีต, ปรับปรุงการเลือกหน้าของ TIFF ผ่าน PageBuilder, ปรับการจัดการขนาดมิติของการพรีวิว, แก้ไขปัญหาการทำงานพร้อมกันของ Visio และการสร้างไฟล์ DOC, และเปลี่ยนโหมดการล้มเหลวแบบเงียบหลายแบบให้เป็นข้อยกเว้นที่ชัดเจน — ทำให้ API มีความทนทานและคาดการณ์ได้มากขึ้น

มีอะไรใหม่ในรุ่นนี้

  • [Feature] รวมแถวของ Excel จากหลายไฟล์เข้าในชีตเดียว (MERGERNET-2198)
  • [Feature] ใช้การเลือกหน้าของ PageBuilder กับเอกสาร TIFF แรก (MERGERNET-1372)
  • [Improvement] โยนข้อยกเว้นเมื่อ SetLicense ไม่พบไฟล์ลิขสิทธิ์ (MERGERNET-2183)
  • [Improvement] ปฏิเสธสตรีมลิขสิทธิ์ที่ว่างเปล่าใน SetLicense (MERGERNET-2184)
  • [Improvement] โยนข้อยกเว้นที่ชัดเจนเมื่อพยายามรวมรูปภาพหรือไฟล์เสียงเข้าในรูปแบบที่ไม่รองรับ (MERGERNET-2190)
  • [Improvement] ลบ System.Drawing.Common ออกจากแพคเกจข้ามแพลตฟอร์มและรายงานการพึ่งพาที่หายไปอย่างชัดเจน (MERGERNET-2202)
  • [Bug] ปิดไฟล์ต้นทางหลังจาก Merger เปิดหรือรวมเอกสารโดยใช้เส้นทางไฟล์ (MERGERNET-2187)
  • [Bug] เรียก factory ของสตรีมเพียงครั้งเดียวเมื่อสร้าง Merger (MERGERNET-2189)
  • [Bug] แก้ไขการสร้างไฟล์ DOC ที่เสียหายเมื่อรวม PDF หรือ XPS เข้าใน DOC จากหลายเธรด (MERGERNET-2192)
  • [Bug] ใช้การเปลี่ยนแปลงการวางแนวหน้ากระดาษกับทุกหน้าเมื่อไม่ได้ระบุหมายเลขหน้า (MERGERNET-2194)
  • [Bug] เคารพความกว้างและความสูงของพรีวิวที่ร้องขอในทุกตระกูลรูปแบบเอกสาร (MERGERNET-2196)
  • [Bug] ปฏิเสธ ExtractPages และ RemovePages ที่เรียกโดยไม่มีหมายเลขหน้าแทนการสร้างเอกสารว่างหรือไม่เปลี่ยนแปลง (MERGERNET-2197)
  • [Bug] แก้ไขเอกสาร Visio ที่ล้มเหลวแบบสุ่มด้วย ArgumentNullException trueTypeFont เมื่อประมวลผลพร้อมกัน (MERGERNET-2199)
  • [Bug] แก้ไขพอร์ตโฟลิโอ PDF ที่ล้มเหลวด้วย NullReferenceException เมื่อไฟล์ฝังไม่มีวันที่แก้ไข (MERGERNET-2200)

การเปลี่ยนแปลง API สาธารณะ

1. การรวมสเปรดชีต — โหมดแถว (API ใหม่)

ประเภทสาธารณะใหม่ในเนมสเปซ GroupDocs.Merger.Domain.Options:

ประเภท คำอธิบาย
SpreadsheetJoinOptions ตัวเลือกการรวมสเปรดชีต, สืบทอดจาก PageJoinOptions. คุณสมบัติ: Mode, SkipRows, SheetMatching.
SpreadsheetJoinMode Worksheets (ค่าเริ่มต้น) จะเพิ่มแผ่นงานของไฟล์ที่รวมเป็นแผ่นงานแยกต่างหาก, เหมือนเดิม. Rows จะต่อแถวของแต่ละไฟล์ที่รวมไว้ด้านล่างแถวสุดท้ายที่มีข้อมูลของแผ่นงานที่ตรงกันในผลลัพธ์.
SpreadsheetSheetMatching ByIndex (ค่าเริ่มต้น) จะต่อแผ่นงานที่ 2 กับแผ่นงานที่ 2, แผ่นงานที่ 3 กับแผ่นงานที่ 3, ฯลฯ; FirstSheetOnly จะต่อเฉพาะแผ่นงานแรกของแต่ละไฟล์ที่รวม.
  • SkipRows ข้ามแถวแรก N แถวของทุกไฟล์ที่รวม, เช่น แถวหัวตาราง. เอกสารแรกจะถูกนำเข้าทั้งหมดโดยไม่มีการข้าม. SkipRows และ SheetMatching ไม่มีผลในโหมด Worksheets.
  • รูปแบบที่รองรับ: XLSX, XLS, XLSM, XLSB, XLTX, XLTM, XLT, XLAM และ ODS.
  • สิ่งที่ถูกคัดลอกต่อ: ค่าของเซลล์, สูตร (อ้างอิงเชิงสัมพัทธ์จะถูกปรับ), สไตล์, เซลล์ที่รวมกันและความสูงของแถว. สิ่งที่ไม่ถูกคัดลอกต่อ: แผนภูมิ, รูปภาพ, ตาราง Pivot, ตารางทั่วไป, การจัดรูปแบบตามเงื่อนไขและการตรวจสอบข้อมูล.
  • หาก SkipRows มีค่าติดลบจะโยน GroupDocsMergerException (“The count of rows to skip can not be negative.”).
  • หากเกินขีดจำกัดจำนวนแถว (65,536 สำหรับ XLS/XLT, 1,048,576 สำหรับรูปแบบอื่น) จะโยน GroupDocsMergerException.
  • ApplyPageBuilder จะโยน GroupDocsMergerException ในขณะที่สเปรดชีตที่รวมในโหมด Rows ยังอยู่ในสถานะรอการประมวลผล.

2. TIFF — PageBuilder ใช้การเลือกหน้าของเอกสารแรก

ไม่มีการเปลี่ยนแปลง API. CreatePageBuilder และ ApplyPageBuilder ตอนนี้จะใช้หน้าที่เลือกจากเอกสาร TIFF แรก; ก่อนหน้านี้หน้าทั้งหมดของเอกสารแรกจะถูกรวมเสมอ. การรวมที่ไม่ได้ใช้ PageBuilder จะให้ผลลัพธ์เช่นเดิม.

หลังจากการรวมด้วย ImageJoinOptions, CreatePageBuilder และ ApplyPageBuilder ตอนนี้จะโยน GroupDocsMergerException เนื่องจากรูปภาพที่รวมจะถูกจัดเป็นเลย์เอาต์เดียวแทนการเป็นลำดับหน้าต่อหน้า.

3. การให้ลิขสิทธิ์ — SetLicense ไม่ล้มเหลวแบบเงียบอีกต่อไป

  • License.SetLicense(string licensePath) จะโยน InvalidOperationException (“License not found: …”) เมื่อไม่พบไฟล์ลิขสิทธิ์.
  • License.SetLicense(Stream licenseStream) จะโยน ArgumentNullException หากสตรีมว่างเปล่า.

4. การดำเนินการหน้ากับรายการหน้าว่าง

  • ExtractPages และ RemovePages ที่เรียกโดยไม่มีหมายเลขหน้า จะโยน GroupDocsMergerException (“There are no page numbers to extract.” / “There are no page numbers to remove.”).
  • ChangeOrientation ที่เรียกโดยไม่มีหมายเลขหน้า จะเปลี่ยนการวางแนวของทุกหน้าในเอกสาร PDF, XPS, เอกสารประมวลผลคำ, สเปรดชีตและ Visio.

5. ขนาดพรีวิว

GeneratePreview ตอนนี้ปรับขนาดภาพของทุกหน้าตาม Width และ Height ที่ร้องขอ — ขยายให้ตรงกับขนาดนั้นเมื่อระบุทั้งสองค่า. หาก Width หรือ Height มีค่าเป็นลบจะโยน GroupDocsMergerException.

6. System.Drawing.Common และการพึ่งพาที่หายไป

  • แพคเกจข้ามแพลตฟอร์ม (GroupDocs.Merger.Net60, GroupDocs.Merger.Net80, GroupDocs.Merger.Net100) ไม่ได้พึ่งพา System.Drawing.Common อีกต่อไป.
  • การพึ่งพา runtime ที่หายไปจะโยน MissingDependencyException, พร้อมระบุส่วนที่หายและคำแนะนำการติดตั้ง.

7. การรวมรูปภาพและไฟล์เสียงเข้าสู่รูปแบบที่ไม่รองรับ

การรวมรูปภาพหรือไฟล์เสียงเข้าสู่รูปแบบเอกสารที่ไม่รองรับจะโยน FileTypeNotSupportedException (“Joining ‘…’ into ‘…’ is not supported”).

คุณสมบัติใหม่

  • การรวมสเปรดชีตแบบแถว: แถวของหลายสเปรดชีตสามารถต่อเข้าด้วยกันในชีตเดียวแทนการเพิ่มเป็นแผ่นงานแยกต่างหาก, พร้อมตัวเลือกข้ามแถวหัวตารางและจับคู่แผ่นงานตามตำแหน่ง.
  • PageBuilder สำหรับเอกสาร TIFF: การเลือกหน้าด้วย PageBuilder ตอนนี้จะถูกนำไปใช้กับเอกสาร TIFF แรกด้วย — ก่อนหน้านี้หน้าทั้งหมดของมันจะถูกรวมเสมอ.
  • ขนาดพรีวิวที่แม่นยำ: GeneratePreview ตอนนี้คืนภาพตาม Width และ Height ที่ร้องขอสำหรับทุกตระกูลรูปแบบเอกสาร.
  • การแก้ไขปัญหาการทำงานพร้อมกัน: Visio และการสร้างไฟล์ DOC ไม่ล้มเหลวแบบสุ่มเมื่อประมวลผลจากหลายเธรด.
  • การจัดการทรัพยากร: เอกสารที่เปิดหรือรวมโดยใช้เส้นทางไฟล์จะไม่ค้างไฟล์ต้นทางเปิดอยู่; factory ของสตรีมจะถูกเรียกเพียงครั้งเดียว.
  • ข้อผิดพลาดที่ชัดเจนขึ้น: การดำเนินการหลายอย่างที่ก่อนหน้านี้ล้มเหลวแบบเงียบจะโยนข้อยกเว้นที่อธิบายรายละเอียด.

ตัวอย่างโค้ด

using GroupDocs.Merger;
using GroupDocs.Merger.Domain.Options;

using (var merger = new Merger("january.xlsx"))
{
    var options = new SpreadsheetJoinOptions
    {
        Mode = SpreadsheetJoinMode.Rows,   // ต่อแถวเข้าในแผ่นงานที่มีอยู่
        SkipRows = 1                        // ข้ามแถวหัวตารางของแต่ละไฟล์ที่รวม
    };

    merger.Join("february.xlsx", options);
    merger.Join("march.xlsx", options);
    merger.Save("q1.xlsx");
}

วิธีรับอัปเดต

NuGet

  • แพคเกจ: GroupDocs.Merger 26.9.0
  • คำสั่งติดตั้ง:
    dotnet add package GroupDocs.Merger --version 26.9.0
    

ดาวน์โหลดโดยตรง

แหล่งข้อมูล