Cara Membandingkan File XLSX di C# Menggunakan Streams – Panduan Lengkap

Membandingkan spreadsheet Excel secara manual itu melelahkan dan rawan kesalahan, terutama ketika Anda harus memvalidasi laporan keuangan besar atau mengaudit kumpulan data. Dalam tutorial ini Anda akan menemukan how to compare xlsx file secara efisien dengan GroupDocs.Comparison untuk .NET menggunakan pemrosesan berbasis stream. Kami akan membahas setiap langkah, menjelaskan mengapa stream penting, dan memberi Anda tip praktis yang dapat Anda salin ke proyek Anda sendiri.

Jawaban Cepat

  • Library apa yang menangani perbandingan Excel? GroupDocs.Comparison untuk .NET.
  • Bisakah saya membandingkan file tanpa menyimpannya ke disk? Ya—gunakan stream untuk bekerja langsung dengan data dalam memori.
  • Apakah lisensi diperlukan untuk produksi? Lisensi komersial wajib; trial gratis tersedia.
  • Versi .NET apa yang didukung? .NET Framework 4.5+, .NET Core 3.1+, .NET 5/6/7.
  • Berapa banyak format Excel yang didukung? Lebih dari 20, termasuk .xls, .xlsx, .xlsm, dan .csv.

Apa itu “how to compare xlsx”?

“How to compare xlsx” mengacu pada deteksi perbedaan secara programatik antara dua file workbook Excel. GroupDocs.Comparison untuk .NET membaca setiap workbook, mengevaluasi perubahan pada tingkat sel, dan menghasilkan dokumen hasil yang disorot yang menampilkan penyisipan, penghapusan, dan modifikasi. Perbandingan menyoroti sel, baris, dan lembar yang berubah, memudahkan peninjauan perbedaan sekilas.

Mengapa menggunakan perbandingan berbasis stream?

Pemrosesan stream mengurangi tekanan memori dengan membaca file dalam potongan alih-alih memuat seluruh workbook ke RAM. GroupDocs.Comparison dapat menangani 50 + input and output formats dan memproses multi‑hundred‑page spreadsheets sambil menjaga penggunaan memori puncak di bawah 100 MB pada perangkat server tipikal. Ini membuatnya ideal untuk layanan web, micro‑services, dan pekerjaan batch on‑premise.

Prasyarat

  1. GroupDocs.Comparison untuk .NET – unduh dari situs resmi here.
  2. Lingkungan pengembangan C# – Visual Studio 2022 atau IDE apa pun yang mendukung .NET 6+.
  3. File Excel – dua workbook .xlsx yang ingin Anda bandingkan.
  4. Pemahaman dasar tentang stream – konsep System.IO.Stream digunakan sepanjang contoh.

Impor Namespace

Namespace berikut memberi Anda akses ke mesin perbandingan dan utilitas stream.

Namespace GroupDocs.Comparison berisi kelas inti perbandingan, sementara System.IO menyediakan tipe FileStream dan MemoryStream yang diperlukan untuk penanganan stream.

Panduan Implementasi Langkah‑per‑Langkah

Bagaimana penggunaan stream memengaruhi kinerja?

Muat setiap workbook dengan File.OpenRead() dan berikan stream yang dihasilkan langsung ke comparer. Pendekatan ini menghindari file sementara, memotong waktu I/O hingga 30 % pada penyimpanan SSD, dan menjaga proses sepenuhnya dalam memori, yang penting untuk API web berkecepatan tinggi.

Langkah 1: Inisialisasi Variabel Output

Tentukan dimana hasil perbandingan akan disimpan. Menggunakan Path.Combine() menjamin pemisah direktori yang benar pada Windows, Linux, atau macOS.

Pro Tip: Di produksi, tulis output ke folder sementara atau bucket penyimpanan cloud untuk menjaga direktori aplikasi tetap bersih.

Langkah 2: Buat Objek Comparer

Kelas Comparer adalah komponen pusat yang mengatur perbandingan dua atau lebih dokumen.

Buat instance Comparer dengan membuka workbook sumber menggunakan File.OpenRead(). Pernyataan using menjamin bahwa stream file ditutup secara otomatis, mencegah kebocoran handle file.

Langkah 3: Tambahkan Dokumen Target

Tambahkan workbook kedua ke comparer. Anda dapat menambahkan target tambahan jika perlu membandingkan satu file master dengan beberapa varian—berguna untuk pelaporan regional atau skenario kontrol versi.

Langkah 4: Lakukan Perbandingan

Panggil metode Compare untuk menghasilkan dokumen diff. Hasilnya ditulis ke stream baru yang dibuat dengan File.Create(). File output menyoroti semua sel, baris, dan lembar yang berubah, memudahkan peninjauan visual.

Metode Compare mengeksekusi perbandingan dan mengembalikan dokumen hasil sebagai stream.

Langkah 5: Tampilkan Pesan Sukses

Setelah perbandingan selesai, log pesan sukses singkat yang mencakup jalur output. Dalam API dunia nyata, Anda akan mengembalikan stream ke pemanggil atau menyimpannya di penyimpanan cloud untuk diambil nanti.

Masalah Umum dan Pemecahan Masalah

  • Kesalahan file‑in‑use: Pastikan tidak ada proses lain (termasuk Excel) yang membuka file. Stream yang dibuka dengan File.OpenRead() memperoleh kunci berbagi baca‑saja, yang mengurangi sebagian besar konflik.
  • Lonjakan memori dengan file besar: Untuk workbook yang melebihi 100 MB, aktifkan flag ComparerOptionsEnableMemoryOptimization (jika tersedia) dan pantau memori privat proses.
  • Perbandingan format campuran: GroupDocs.Comparison mendukung pasangan format yang konsisten; hindari membandingkan file .xls dengan file .xlsx dalam operasi yang sama untuk mencegah ketidaksesuaian tata letak.
  • Posisi stream: Saat menggunakan kembali sebuah stream, selalu reset dengan stream.Seek(0, SeekOrigin.Begin) sebelum memberikannya ke comparer.

Penanganan error yang kuat: Tangkap ComparisonException untuk workbook yang rusak dan log nama file untuk penyelidikan lebih lanjut. ComparisonException dilempar oleh GroupDocs.Comparison ketika dokumen input rusak atau menggunakan format yang tidak didukung.

Kinerja dan Praktik Terbaik

  • Buang stream segera: Bungkus setiap FileStream dalam blok using.
  • Pemrosesan batch: Gunakan Parallel.ForEach dengan comparer async untuk menangani banyak pasangan file secara bersamaan, tetapi batasi tingkat paralelisme untuk menghindari beban CPU berlebih.
  • Penanganan error yang kuat: Tangkap ComparisonException untuk workbook yang rusak dan log nama file untuk penyelidikan lebih lanjut.
  • Validasi stream input: Verifikasi tipe MIME atau header file sebelum perbandingan untuk menolak unggahan non‑Excel lebih awal.

ComparerOptions menyediakan pengaturan konfigurasi untuk proses perbandingan, seperti optimasi memori dan kontrol sensitivitas.

Skenario Penggunaan Lanjutan

  • Perbandingan BLOB Database: Ambil BLOB Excel dari SQL Server, bungkus dalam MemoryStream, dan berikan langsung ke comparer—tanpa file sementara.
  • Integrasi penyimpanan cloud: Gunakan Azure Blob Storage SDK untuk mendapatkan BlobStream dan berikan ke comparer, memungkinkan alur kerja sepenuhnya serverless.
  • Endpoint API waktu‑nyata: Ekspos endpoint POST yang menerima dua file multipart/form‑data, membandingkannya secara langsung, dan mengembalikan diff sebagai stream yang dapat diunduh.

Kesimpulan

Dengan memanfaatkan API berbasis stream GroupDocs.Comparison, Anda mendapatkan cara efisien memori, aman, dan skalabel untuk membandingkan file XLSX di C#. Panduan ini mencakup semua mulai dari penyiapan hingga skenario cloud lanjutan, memberi Anda fondasi kuat untuk mengintegrasikan perbandingan spreadsheet ke dalam solusi .NET apa pun.

Pertanyaan yang Sering Diajukan

Q: Apakah GroupDocs.Comparison untuk .NET kompatibel dengan semua format Excel?
A: Ya, mendukung lebih dari 20 format terkait Excel, termasuk .xls, .xlsx, .xlsm, dan .csv, memastikan kompatibilitas luas antara workbook lama dan modern.

Q: Bisakah saya menyesuaikan gaya visual hasil perbandingan?
A: Tentu. API memungkinkan Anda mengatur warna sorotan, mengubah gaya border, dan menyesuaikan tingkat sensitivitas perubahan melalui ComparisonOptions.

Q: Apakah saya memerlukan lisensi komersial untuk penggunaan produksi?
A: Lisensi GroupDocs.Comparison yang valid diperlukan untuk setiap penyebaran komersial. Anda dapat memperoleh satu here.

Q: Apakah trial gratis tersedia?
A: Ya, Anda dapat mengunduh trial penuh fungsi here untuk mengevaluasi semua fitur sebelum membeli.

Q: Di mana saya dapat mendapatkan dukungan komunitas?
A: Forum GroupDocs.Comparison here adalah tempat aktif untuk mengajukan pertanyaan dan berbagi solusi dengan pengembang lain.


Terakhir Diperbarui: 2026-06-21
Diuji Dengan: GroupDocs.Comparison 23.10 untuk .NET
Penulis: GroupDocs

using System;
using System.IO;
string outputDirectory = "Your Document Directory";
string outputFileName = Path.Combine(outputDirectory, "result.xlsx");
using (Comparer comparer = new Comparer(File.OpenRead("source.xlsx")))
comparer.Add(File.OpenRead("target.xlsx"));
comparer.Compare(File.Create(outputFileName));
Console.WriteLine($"\nDocuments compared successfully.\nCheck output in {outputDirectory}.");

Tutorial Terkait