วิธีเปรียบเทียบไฟล์ Excel ใน Java ด้วย GroupDocs Document Comparison API

ในหลายองค์กร คุณต้อง compare Excel files in Java เพื่อค้นหาการเปลี่ยนแปลงของรายงานการเงิน การตรวจสอบการแก้ไขข้อมูล หรือยืนยันผลการย้ายข้อมูล การเปิดไฟล์เวิร์กบุ๊กสองไฟล์และสแกนเซลล์ทีละเซลล์ด้วยตนเองเสี่ยงต่อข้อผิดพลาดและเสียเวลามาก คู่มือฉบับนี้จะแสดงให้คุณเห็น how to compare Excel เวิร์กบุ๊กโดยใช้โปรแกรมด้วย GroupDocs.Comparison for Java เพื่อสร้างรายงาน diff ที่แม่นยำระดับพิกเซลในเวลาไม่กี่วินาที

คำตอบสั้น

  • GroupDocs สามารถเปรียบเทียบไฟล์ Excel ใน Java ได้หรือไม่? Yes – just load the .xlsx files with the Comparer class and call compare.
  • วิธีละเว้นส่วนหัว/ส่วนท้าย? Set setHeaderFootersComparison(false) in CompareOptions.
  • เกี่ยวกับ PDF ขนาดใหญ่ล่ะ? Increase JVM heap, enable streaming mode, and use memory‑optimized options.
  • ฉันสามารถเปรียบเทียบ PDF ที่ป้องกันด้วยรหัสผ่านได้หรือไม่? Provide the password when creating the Comparer.
  • มีวิธีเปลี่ยนสีไฮไลท์หรือไม่? Use StyleSettings for inserted, deleted, and changed items.

การเปรียบเทียบไฟล์ Excel ใน Java คืออะไร?

การเปรียบเทียบไฟล์ Excel ใน Java หมายถึงการตรวจจับการเพิ่ม, การลบ หรือการแก้ไขระดับเซลล์ระหว่างเวิร์กบุ๊ก .xlsx สองไฟล์โดยอัตโนมัติและสร้างรายงาน diff ที่แสดงการเปลี่ยนแปลงเหล่านั้น GroupDocs.Comparison จะโหลดสเปรดชีตแต่ละไฟล์เข้าสู่หน่วยความจำ, ประเมินสูตร, สไตล์, และโครงสร้างแผ่นงาน, จากนั้นเรนเดอร์รายงาน PDF/HTML แบบข้างเคียงหรือซ้อนทับที่นักพัฒนาสามารถฝังในแดชบอร์ดหรือส่งอีเมลให้ผู้มีส่วนได้ส่วนเสียได้

ทำไมต้องใช้ Java document comparison API?

การทำให้กระบวนการสร้าง diff เป็นอัตโนมัติช่วยขจัดข้อผิดพลาดของมนุษย์ที่ทำให้พลาดการเปลี่ยนแปลงประมาณ 20 % ในการตรวจสอบด้วยมือ, ทำให้ผลลัพธ์สม่ำเสมอและเชื่อถือได้ GroupDocs ให้การตรวจจับการแก้ไขทุกอย่างอย่างแม่นยำ, เวลาประมวลผลเร็ว, และสไตล์ผลลัพธ์สอดคล้องกันในทุกฟอร์แมต, ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานของทีมการเงิน, กฎหมาย, และการจัดการเนื้อหา

รูปแบบไฟล์ที่รองรับและความสามารถ

GroupDocs.Comparison for Java รองรับ 50+ ฟอร์แมตเข้าและออก, รวมถึง:

  • เอกสาร: DOCX, DOC, PDF, RTF, ODT
  • สเปรดชีต: XLSX, XLS, CSV, ODS
  • งานนำเสนอ: PPTX, PPT, ODP
  • ข้อความ: TXT, HTML, XML, MD
  • รูปภาพ: PNG, JPEG, BMP, GIF (visual comparison)

ความสามารถขั้นสูงรวมถึงการจัดการเอกสารที่ป้องกันด้วยรหัสผ่าน, การตรวจจับหลายภาษา, ความอ่อนไหวที่กำหนดเองตามประเภทเอกสาร, การประมวลผลแบบแบตช์, และตัวเลือกการปรับใช้ทั้งบนคลาวด์และในเครื่อง

ข้อกำหนดเบื้องต้นและการตั้งค่า

ข้อกำหนดระบบ

  1. Java Development Kit (JDK): 8 or higher (JDK 11+ recommended)
  2. เครื่องมือสร้าง: Maven 3.6+ หรือ Gradle 6.0+
  3. หน่วยความจำ: ขั้นต่ำ 4 GB RAM สำหรับไฟล์ขนาดใหญ่
  4. พื้นที่จัดเก็บ: อย่างน้อย 500 MB ว่างสำหรับข้อมูลเปรียบเทียบชั่วคราว

การกำหนดค่า Maven

เพิ่มรีโพซิทอรีและ dependency ของ GroupDocs ลงใน pom.xml ของคุณ เพื่อให้ดึงเวอร์ชันอย่างเป็นทางการ:

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/comparison/java/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-comparison</artifactId>
        <version>25.2</version>
    </dependency>
</dependencies>

การตั้งค่าไลเซนส์

สำหรับการพัฒนาและทดสอบ

สำหรับการใช้งานจริง

Initialize the license at application startup:

// License initialization - do this once at application startup
com.groupdocs.comparison.License license = new com.groupdocs.comparison.License();
license.setLicense("path/to/your/license/file.lic");

Pro tip: Store the license file in your resources folder and load it with getClass().getResourceAsStream() for portable deployments.

คู่มือการใช้งานหลัก

ฟีเจอร์ 1: ไม่เปรียบเทียบส่วนหัวและส่วนท้าย

เมธอด setHeaderFootersComparison ปิดการเปรียบเทียบเนื้อหาส่วนหัวและส่วนท้าย, ป้องกันความแตกต่างที่ไม่เกี่ยวข้องจากการปรากฏใน diff

ทำไมเรื่องนี้สำคัญ: ส่วนหัวและส่วนท้ายมักมีเวลาหรือเลขหน้าที่เปลี่ยนแปลงระหว่างเวอร์ชันแต่ไม่ได้เป็นส่วนของเนื้อหาที่สำคัญ การข้ามส่วนเหล่านี้ช่วยลดสัญญาณรบกวนและเร่งการประมวลผล

สถานการณ์จริง: สองฉบับสัญญามีวันที่สร้างต่างกันในส่วนท้าย; คุณสนใจแค่การเปลี่ยนแปลงข้อกำหนดเท่านั้น

import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
import java.io.FileOutputStream;

public class IgnoreHeaderFooterExample {
    public static void main(String[] args) throws Exception {
        String outputFileName = "YOUR_OUTPUT_DIRECTORY/IgnoreHeaderFooter_result.docx";

        try (OutputStream resultStream = new FileOutputStream(outputFileName);
             Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_with_footer.docx")) {

            comparer.add("YOUR_DOCUMENT_DIRECTORY/target_with_footer.docx");

            // Set comparison options to ignore headers and footers
            CompareOptions compareOptions = new CompareOptions.Builder()
                    .setHeaderFootersComparison(false)
                    .build();

            final Path resultPath = comparer.compare(resultStream, new SaveOptions(), compareOptions);
        }
    }
}

ประโยชน์หลัก: ผลลัพธ์ diff ที่สะอาดกว่า, false positive ลดลง, และการทำงานเร็วขึ้นเนื่องจากส่วนเหล่านั้นถูกละเว้น

ฟีเจอร์ 2: ตั้งค่าขนาดกระดาษสำหรับรายงานระดับมืออาชีพ

Enum PaperSize กำหนดขนาดหน้ามาตรฐานที่ PDF ที่สร้างจะใช้

บริบททางธุรกิจ: ทีมกฎหมายมักต้องการรายงานเปรียบเทียบที่พิมพ์ได้ในขนาดกระดาษเฉพาะสำหรับการยื่นศาลหรือส่งให้ลูกค้า

วิธีใช้: ใช้ enum PaperSize ใน CompareOptions เพื่อกำหนดขนาดเป้าหมาย

import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
import com.groupdocs.comparison.options.enums.PaperSize;

public class SetOutputPaperSizeExample {
    public static void main(String[] args) throws Exception {
        String outputFileName = "YOUR_OUTPUT_DIRECTORY/SetOutputPaperSize_result.docx";

        try (OutputStream resultStream = new FileOutputStream(outputFileName);
             Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_word.docx")) {

            comparer.add("YOUR_DOCUMENT_DIRECTORY/target1_word.docx");

            // Set the paper size to A6
            CompareOptions compareOptions = new CompareOptions.Builder()
                    .setPaperSize(PaperSize.A6)
                    .build();

            final Path resultPath = comparer.compare(resultStream, compareOptions);
        }
    }
}

ขนาดที่รองรับรวมถึง A0‑A10, Letter, Legal, Tabloid, และขนาดกำหนดเอง เลือก A4 สำหรับลูกค้าในยุโรปหรือ Letter สำหรับพันธมิตรในสหรัฐอเมริกา

ฟีเจอร์ 3: ปรับความละเอียดการเปรียบเทียบอย่างละเอียด

เมธอด setSensitivityOfComparison ปรับระดับความละเอียดของเอนจินเปรียบเทียบ, ตั้งแต่การแก้ไขโครงสร้างใหญ่จนถึงการเปลี่ยนแปลงระดับอักขระเดียว

ความท้าทาย: ประเภทเอกสารต่างกันต้องการความละเอียดต่างกัน สัญญากฎหมายต้องการความแม่นยำระดับอักขระ, ส่วนคอนเทนต์การตลาดอาจต้องการระดับย่อหน้าก็พอ

สเกลความอ่อนไหว (0‑100):

  • 0‑25: การเปลี่ยนแปลงใหญ่เท่านั้น (เพิ่ม/ลบย่อหน้า)
  • 26‑50: การเปลี่ยนแปลงปานกลาง (แก้ไขประโยค)
  • 51‑75: การเปลี่ยนแปลงละเอียด (ระดับคำ)
  • 76‑100: การเปลี่ยนแปลงละเอียดมาก (ระดับอักขระ)
import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;

public class AdjustComparisonSensitivityExample {
    public static void main(String[] args) throws Exception {
        String outputFileName = "YOUR_OUTPUT_DIRECTORY/AdjustComparisonSensitivity_result.docx";

        try (OutputStream resultStream = new FileOutputStream(outputFileName);
             Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_word.docx")) {

            comparer.add("YOUR_DOCUMENT_DIRECTORY/target1_word.docx");

            // Set sensitivity to 100 for maximum detail
            CompareOptions compareOptions = new CompareOptions.Builder()
                    .setSensitivityOfComparison(100)
                    .build();

            final Path resultPath = comparer.compare(resultStream, compareOptions);
        }
    }
}

การตั้งค่าที่แนะนำ: เอกสารกฎหมาย 90‑100, เนื้อหาการตลาด 40‑60, สเปคเทคนิค 70‑80

ฟีเจอร์ 4: ปรับสไตล์การเปลี่ยนแปลงเพื่อการสื่อสารที่ดียิ่งขึ้น

อ็อบเจ็กต์ StyleSettings ให้คุณกำหนดสี, ฟอนต์, เส้นขอบ, และสัญญาณภาพอื่น ๆ สำหรับเนื้อหาที่เพิ่ม, ลบ, หรือแก้ไข

ทำไมสไตล์ที่กำหนดเองสำคัญ: ไฮไลท์เริ่มต้นอาจขัดกับแบรนด์หรือแนวทางการเข้าถึง; การปรับสี, ฟอนต์, และเส้นขอบทำให้ diff เข้าใจได้ทันที

ตัวอย่าง: พื้นหลังสีแดงสำหรับการลบ, สีเขียวสำหรับการเพิ่ม, สีน้ำเงินสำหรับการแก้ไข

import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
import com.groupdocs.comparison.options.save.SaveOptions;
import com.groupdocs.comparison.options.style.StyleSettings;

import java.awt.Color;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class CustomizeChangesStylesStreamExample {
    public static void main(String[] args) throws Exception {
        String outputFileName = "YOUR_OUTPUT_DIRECTORY/CustomizeChangesStylesStream_result.docx";

        try (InputStream sourceFile = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/source_word.docx");
             InputStream targetFile = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/target1_word.docx");
             OutputStream resultStream = new FileOutputStream(outputFileName);
             Comparer comparer = new Comparer(sourceFile)) {

            comparer.add(targetFile);

            // Customize change styles for professional appearance
            StyleSettings insertedStyle = new StyleSettings();
            insertedStyle.setHighlightColor(Color.GREEN); // Green for additions
            StyleSettings deletedStyle = new StyleSettings();
            deletedStyle.setHighlightColor(Color.RED); // Red for deletions
            StyleSettings changedStyle = new StyleSettings();
            changedStyle.setHighlightColor(Color.BLUE); // Blue for modifications

            CompareOptions compareOptions = new CompareOptions.Builder()
                    .setInsertedItemStyle(insertedStyle)
                    .setDeletedItemStyle(deletedStyle)
                    .setChangedItemStyle(changedStyle)
                    .build();

            final Path resultPath = comparer.compare(resultStream, compareOptions);
        }
    }
}

ตัวเลือกขั้นสูงให้คุณปรับน้ำหนักฟอนต์, ขนาด, ความทึบของพื้นหลัง, สไตล์เส้นขอบ, และพฤติกรรม strike‑through

วิธีตั้งค่าขนาดกระดาษใน Java สำหรับรายงานเปรียบเทียบ

Comparer เป็นคลาสหลักที่ประสานการเปรียบเทียบเอกสาร โหลดอินสแตนซ์ Comparer ด้วยเวิร์กบุ๊กต้นฉบับ, ตั้งค่าอ็อบเจ็กต์ CompareOptions, แล้วเรียก setPaperSize ด้วยค่า enum PaperSize ที่ต้องการ การตั้งค่านี้กำหนดขนาดหน้าของ PDF ที่สร้าง, รับประกันการพิมพ์ที่ถูกต้องโดยไม่ต้องสเกลด้วยมือ

import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
import com.groupdocs.comparison.options.enums.PaperSize;

public class SetOutputPaperSizeExample {
    public static void main(String[] args) throws Exception {
        String outputFileName = "YOUR_OUTPUT_DIRECTORY/SetOutputPaperSize_result.docx";

        try (OutputStream resultStream = new FileOutputStream(outputFileName);
             Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_word.docx")) {

            comparer.add("YOUR_DOCUMENT_DIRECTORY/target1_word.docx");

            // Set the paper size to A6
            CompareOptions compareOptions = new CompareOptions.Builder()
                    .setPaperSize(PaperSize.A6)
                    .build();

            final Path resultPath = comparer.compare(resultStream, compareOptions);
        }
    }
}

คุณสามารถรวมการตั้งค่านี้กับระยะขอบและทิศทางที่กำหนดเองเพื่อให้ได้เลย์เอาต์ที่สอดคล้องกับแนวทางการส่งเอกสารขององค์กร, ทำให้รายงานดูเป็นมืออาชีพทุกครั้ง

ปัญหาที่พบบ่อยและการแก้ไขข้อผิดพลาด

การจัดการหน่วยความจำสำหรับเอกสารขนาดใหญ่

ปัญหา: OutOfMemoryError เมื่อเปรียบเทียบไฟล์ใหญ่กว่า 50 MB.
วิธีแก้: เพิ่ม heap ของ JVM (-Xmx8g) และเปิดโหมดสตรีมมิ่ง

# Increase heap size for large document processing
java -Xmx4g -XX:MaxMetaspaceSize=512m YourComparisonApp

การจัดการไฟล์เสียหายหรือป้องกันด้วยรหัสผ่าน

PasswordRequiredException จะถูกโยนเมื่อ API พบเอกสารที่เข้ารหัสโดยไม่มีรหัสผ่านที่ให้มา

ปัญหา: การเปรียบเทียบล้มเหลวกับเอกสารที่ล็อกไว้.
การป้องกัน: ให้รหัสผ่านเมื่อสร้าง Comparer และจับ PasswordRequiredException

// Check document accessibility before comparison
try {
    Comparer comparer = new Comparer(sourceFile, "password123");
    // Document loaded successfully, proceed with comparison
} catch (PasswordRequiredException ex) {
    // Handle password‑protected documents
    log.error("Document requires password: " + sourceFile);
} catch (CorruptedFileException ex) {
    // Handle corrupted files gracefully
    log.error("File corruption detected: " + sourceFile);
}

การเพิ่มประสิทธิภาพการทำงานแบบแบตช์

ความท้าทาย: ประมวลผลคู่เอกสาร 100+ คู่อย่างมีประสิทธิภาพ.
วิธีแก้: ใช้ thread pool ขนาดคงที่และส่งงานเปรียบเทียบแต่ละงานเป็น task แยก

ExecutorService executor = Executors.newFixedThreadPool(4);
List<Future<ComparisonResult>> futures = new ArrayList<>();

for (DocumentPair pair : documentPairs) {
    futures.add(executor.submit(() -> compareDocuments(pair)));
}

// Wait for all comparisons to complete
for (Future<ComparisonResult> future : futures) {
    ComparisonResult result = future.get();
    // Process results
}
executor.shutdown();

ปัญหาเฉพาะรูปแบบ

  • PDF สแกน: ทำการประมวลผล OCR ก่อนการเปรียบเทียบ.
  • เอกสาร Word: Disable existing “Track Changes” to avoid false diffs.
  • วัตถุฝัง: Extract and compare them separately for accuracy.

แนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับการเพิ่มประสิทธิภาพ

1. การเตรียมเอกสารล่วงหน้า

ลบเมตาดาต้าที่ไม่จำเป็นและทำให้ฟอนต์เป็นมาตรฐานก่อนเปรียบเทียบเพื่อเพิ่มความเร็วและความแม่นยำ

// Example preprocessing workflow
public void preprocessDocument(String filePath) {
    // Remove comments and tracked changes
    // Standardize formatting
    // Extract text‑only version for pure content comparison
}

2. โปรไฟล์การกำหนดค่าที่เหมาะสม

สร้าง preset CompareOptions ที่ใช้ซ้ำได้สำหรับแต่ละประเภทเอกสาร (กฎหมาย, การตลาด, เทคนิค) และนำกลับมาใช้ใน pipeline ของคุณ

public class ComparisonProfiles {
    public static CompareOptions getLegalDocumentProfile() {
        return new CompareOptions.Builder()
                .setSensitivityOfComparison(95)
                .setHeaderFootersComparison(false)
                .setShowRevisions(true)
                .build();
    }
    
    public static CompareOptions getMarketingContentProfile() {
        return new CompareOptions.Builder()
                .setSensitivityOfComparison(45)
                .setIgnoreFormatting(true)
                .setFocusOnContent(true)
                .build();
    }
}

3. การจัดการข้อผิดพลาดและการบันทึกที่แข็งแรง

ComparisonException แสดงความล้มเหลวระหว่างกระบวนการเปรียบเทียบและให้ข้อมูลวินิจฉัยโดยละเอียด. ห่อการเรียกเปรียบเทียบในบล็อก try‑catch, บันทึกรายละเอียด ComparisonException, และใช้ค่าเริ่มต้นปลอดภัยเมื่อจำเป็น

public ComparisonResult safeCompareDocuments(String source, String target) {
    try {
        return performComparison(source, target);
    } catch (Exception ex) {
        logger.error("Comparison failed for {} vs {}: {}", source, target, ex.getMessage());
        return ComparisonResult.failure(ex.getMessage());
    }
}

4. การแคชและการใช้ซ้ำอย่างชาญฉลาด

  • แคชผลลัพธ์ diff สำหรับคู่ไฟล์ที่เหมือนกัน.
  • เก็บลายนิ้วมือเอกสาร (hash) เพื่อข้ามไฟล์ที่ไม่ได้เปลี่ยนแปลง.
  • ใช้คิวแบบอะซิงโครนัสสำหรับการเปรียบเทียบที่ไม่สำคัญเพื่อให้ UI ตอบสนองได้.

สถานการณ์การบูรณาการในโลกจริง

สถานการณ์ 1: ระบบตรวจสอบสัญญาอัตโนมัติ

@Service
public class ContractReviewService {
    
    public void processContractRevision(String originalContract, String revisedContract) {
        CompareOptions legalOptions = ComparisonProfiles.getLegalDocumentProfile();
        
        try (Comparer comparer = new Comparer(originalContract)) {
            comparer.add(revisedContract);
            Path result = comparer.compare(generateOutputPath(), legalOptions);
            
            // Send comparison report to legal team
            emailService.sendComparisonReport(result, legalTeamEmails);
            
            // Log changes for audit trail
            auditService.logDocumentChanges(extractChanges(result));
        }
    }
}

สถานการณ์ 2: การบูรณาการระบบจัดการเนื้อหา

@RestController
public class DocumentComparisonController {
    
    @PostMapping("/api/documents/compare")
    public ResponseEntity<ComparisonReport> compareDocuments(
            @RequestParam("source") MultipartFile source,
            @RequestParam("target") MultipartFile target,
            @RequestParam(value = "sensitivity", defaultValue = "75") int sensitivity) {
        
        CompareOptions options = new CompareOptions.Builder()
                .setSensitivityOfComparison(sensitivity)
                .build();
                
        ComparisonReport report = documentComparisonService.compare(source, target, options);
        return ResponseEntity.ok(report);
    }
}

คำถามที่พบบ่อย

ถาม: ฉันสามารถละเว้นส่วนหัวและส่วนท้ายระหว่างการเปรียบเทียบใน GroupDocs สำหรับ Java ได้หรือไม่?
ตอบ: ใช่, เรียก setHeaderFootersComparison(false) บน CompareOptions. วิธีนี้จะลบเสียงรบกวนจากส่วนหัว/ส่วนท้ายที่เปลี่ยนแปลงบ่อยออกจาก diff.

ถาม: ฉันจะตั้งค่าขนาดกระดาษออกผลใน Java ด้วย GroupDocs อย่างไร?
ตอบ: ใช้ setPaperSize(PaperSize.A6) (หรือค่า enum ใดก็ได้) ใน CompareOptions. จะสร้าง PDF ที่พร้อมพิมพ์ในขนาดที่เลือก.

ถาม: สามารถปรับความอ่อนไหวของการเปรียบเทียบสำหรับประเภทเอกสารต่าง ๆ ได้หรือไม่?
ตอบ: แน่นอน. เรียก setSensitivityOfComparison(85) สำหรับสัญญากฎหมายหรือ setSensitivityOfComparison(45) สำหรับร่างการตลาดเพื่อควบคุมระดับความละเอียด.

ถาม: ฉันสามารถปรับสไตล์ของข้อความที่เพิ่ม, ลบ, และเปลี่ยนแปลงระหว่างการเปรียบเทียบได้หรือไม่?
ตอบ: ใช่. สร้างอินสแตนซ์ StyleSettings สำหรับแต่ละประเภทการเปลี่ยนแปลงและกำหนดสี, ฟอนต์, หรือเส้นขอบก่อนส่งให้ CompareOptions.

ถาม: สิ่งที่ต้องเตรียมก่อนเริ่มใช้ GroupDocs Comparison ใน Java มีอะไรบ้าง?
ตอบ: คุณต้องมี JDK 8+ (แนะนำ JDK 11+), Maven 3.6+ หรือ Gradle 6.0+, RAM อย่างน้อย 4 GB, และไลเซนส์ GroupDocs ที่ถูกต้อง (มีเวอร์ชันทดลองฟรี).

ถาม: จะจัดการกับเอกสารที่ป้องกันด้วยรหัสผ่านใน GroupDocs.Comparison อย่างไร?
ตอบ: ส่งรหัสผ่านเป็นอาร์กิวเมนต์ที่สองเมื่อสร้าง Comparer: new Comparer(sourceFile, "myPassword"). จับ PasswordRequiredException เพื่อจัดการข้อผิดพลาดอย่างสุภาพ.

ถาม: GroupDocs.Comparison for Java รองรับฟอร์แมตไฟล์อะไรบ้าง?
ตอบ: รองรับกว่า 50 ฟอร์แมต, รวมถึง DOCX, PDF, XLSX, PPTX, TXT, HTML, XML, และรูปภาพทั่วไป (PNG, JPEG). API จะตรวจจับฟอร์แมตอัตโนมัติ, แต่คุณสามารถระบุอย่างชัดเจนเพื่อเพิ่มประสิทธิภาพการประมวลผลแบบแบตช์ได้.

สรุป

โดยการใช้ GroupDocs.Comparison for Java คุณสามารถทำให้การเปรียบเทียบเวิร์กบุ๊ก Excel — และฟอร์แมตอื่น ๆ ที่รองรับ — เป็นอัตโนมัติด้วยความแม่นยำ, ความเร็ว, และความสม่ำเสมอ. นำส่วนโค้ดและเคล็ดลับจากคู่มือนี้ไปผสานใน CI/CD pipeline, ระบบจัดการเอกสาร, หรือเครื่องมือการตรวจสอบของคุณเพื่อเพิ่มผลผลิตอย่างวัดได้


อัปเดตล่าสุด: 2026-11-01
ทดสอบกับ: GroupDocs.Comparison 25.2 for Java
ผู้เขียน: GroupDocs

// Use streaming for memory efficiency
try (Comparer comparer = new Comparer(sourceStream)) {
    // Process in chunks for very large documents
    CompareOptions options = new CompareOptions.Builder()
            .setMemoryOptimization(true) // Enable memory optimization
            .build();
}

บทแนะนำที่เกี่ยวข้อง