เรามีความยินดีที่จะแจ้งการปล่อย 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 ที่ล้มเหลวแบบสุ่มด้วย
ArgumentNullExceptiontrueTypeFont เมื่อประมวลผลพร้อมกัน (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