วิธีเปรียบเทียบไฟล์ 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
.xlsxfiles with theComparerclass and callcompare. - วิธีละเว้นส่วนหัว/ส่วนท้าย? Set
setHeaderFootersComparison(false)inCompareOptions. - เกี่ยวกับ PDF ขนาดใหญ่ล่ะ? Increase JVM heap, enable streaming mode, and use memory‑optimized options.
- ฉันสามารถเปรียบเทียบ PDF ที่ป้องกันด้วยรหัสผ่านได้หรือไม่? Provide the password when creating the
Comparer. - มีวิธีเปลี่ยนสีไฮไลท์หรือไม่? Use
StyleSettingsfor 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)
ความสามารถขั้นสูงรวมถึงการจัดการเอกสารที่ป้องกันด้วยรหัสผ่าน, การตรวจจับหลายภาษา, ความอ่อนไหวที่กำหนดเองตามประเภทเอกสาร, การประมวลผลแบบแบตช์, และตัวเลือกการปรับใช้ทั้งบนคลาวด์และในเครื่อง
ข้อกำหนดเบื้องต้นและการตั้งค่า
ข้อกำหนดระบบ
- Java Development Kit (JDK): 8 or higher (JDK 11+ recommended)
- เครื่องมือสร้าง: Maven 3.6+ หรือ Gradle 6.0+
- หน่วยความจำ: ขั้นต่ำ 4 GB RAM สำหรับไฟล์ขนาดใหญ่
- พื้นที่จัดเก็บ: อย่างน้อย 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>
การตั้งค่าไลเซนส์
สำหรับการพัฒนาและทดสอบ
- Free trial: Download from GroupDocs Downloads – includes watermarked output.
- Temporary license: Get 30‑day full access via GroupDocs Support.
สำหรับการใช้งานจริง
- Full license: Purchase through GroupDocs Purchase for unlimited commercial use.
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();
}