Birden Çok Excel Dosyasını Tek Bir Dosyada Birleştirin

Birkaç Excel (XLSX, XLS) çalışma kitabınız var ve bunları raporlama amacıyla veya verileri tek bir yerde tutmak için tek bir dosyada birleştirmek istiyorsunuz. Bir Java geliştiricisi olarak, birden fazla Excel dosyasını program aracılığıyla kolayca tek bir dosyada birleştirebilirsiniz. Bu makalede, birden fazla Excel dosyasını Java kullanarak tek bir dosyada nasıl birleştireceğinizi öğreneceksiniz.

Bu makalede aşağıdaki konular tartışılmaktadır/kapsanmaktadır:

Excel Dosyalarını Birleştirmek için Java API

Birden fazla Excel dosyasını birleştirmek için Aspose.Cells for Java API kullanacağım. Bu API, Microsoft Excel’e güvenmeden elektronik tablolar oluşturmanıza, değiştirmenize, dönüştürmenize, korumanıza veya yazdırmanıza olanak tanır. Java uygulamalarınızda Excel otomasyon özelliklerini programlı olarak gerçekleştirmenizi sağlar.

Aşağıda belirtilen kod örneklerini denemek için API’nin JAR’ını indirebilir veya yalnızca aşağıdaki pom.xml yapılandırmasını Maven tabanlı Java uygulamanıza ekleyebilirsiniz.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells</artifactId>
    <version>21.8</version>
</dependency>

Java Birden Fazla Excel Dosyasını Tek Bir Dosyada Birleştirir

Aşağıda belirtilen adımları izleyerek birden fazla Excel dosyasını programlı olarak tek bir dosyada kolayca birleştirebilirsiniz:

  1. İlk kaynak dosyayla Workbook sınıfının bir örneğini oluşturun
  2. İkinci kaynak dosyayla Workbook sınıfının bir örneğini oluşturun
  3. İkiden fazla dosyayı birleştirmek için yukarıdaki adımı tekrarlayın
  4. İkinci kaynak dosya örneğiyle combine() yöntemini çağırın
  5. Tüm kaynak dosyalar için yukarıdaki adımı birer birer tekrarlayın
  6. Workbook sınıfının save() yöntemini çağırarak çıktı dosyasını kaydedin.

Aşağıdaki kod örneği, birden çok Excel dosyasının Java kullanılarak tek bir dosyada nasıl birleştirileceğini gösterir.

// İlk excel dosyasını açın.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");

// İkinci excel dosyasını açın.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");

// Üçüncü excel dosyasını açın.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.xlsx");

// İkinci Excel dosyasının çalışma sayfalarını ilk çalışma kitabına kopyalayın.
SourceBook1.combine(SourceBook2);

// Üçüncü Excel dosyasının çalışma sayfalarını ilk çalışma kitabına kopyalayın.
SourceBook1.combine(SourceBook3);

// Güncellenen ilk excel dosyasını yeni bir dosya olarak kaydedin.
SourceBook1.save("C:\\Files\\CombinedFile.xlsx");
Birden Çok Excel Dosyasını Java Kullanarak Tek Bir Dosyada Birleştirin

Birden Çok Excel Dosyasını Java Kullanarak Tek Bir Dosyada Birleştirin

API’nin Workbook sınıfı, bir Excel Elektronik Tablosu oluşturmak için kullanılan ana sınıftır. Yerel Excel dosyalarını açıp kaydetmenizi sağlar. Ayrıca Excel Elektronik Tablosu ile çalışmak için çeşitli özellikler ve yöntemler sağlar. Bu sınıfın combine() yöntemi, geçerli çalışma kitabını başka bir Workbook nesnesiyle birleştirir. Workbook sınıfının save() yöntemi, çıktı dosyasını belirtilen dosya yoluna kaydeder.

Birden Çok Excel Dosyasının Belirli Çalışma Sayfalarını Tek Bir Dosyada Birleştirme - Java Kılavuzu

Aşağıda belirtilen adımları izleyerek, birden fazla Excel dosyasındaki belirli çalışma sayfalarını programlı olarak tek bir dosyada kolayca birleştirebilirsiniz:

  1. Kaynak dosya 1 için Workbook sınıfının bir örneğini oluşturun
  2. Kaynak dosya 2 için Workbook sınıfının bir örneğini oluşturun
  3. İkiden fazla dosyadaki çalışma sayfalarını birleştirmek için yukarıdaki adımı tekrarlayın
  4. Hedef dosya için Workbook sınıfının bir örneğini oluşturun
  5. WorksheetCollection sınıfının add() yöntemini kullanarak çalışma sayfaları ekleyin
  6. Belirtilen çalışma sayfasını kaynak dosya 1’den hedef dosyaya kopyalamak için copy() yöntemini çağırın
  7. Belirtilen çalışma sayfasını kaynak dosya 2’den hedef dosyaya kopyalamak için copy() yöntemini çağırın
  8. setName() yöntemini kullanarak hedef dosyadaki çalışma sayfalarını yeniden adlandırın
  9. Workbook sınıfının save() yöntemini çağırarak hedef dosyayı kaydedin.

Aşağıdaki kod örneği, birden çok Excel dosyasındaki belirli çalışma sayfalarının Java kullanılarak tek bir dosyada nasıl birleştirileceğini gösterir.

String sourceFile1 = "Quarter_1.xlsx";
String sourceFile2 = "Quarter_2.xlsx";

// İlk Excel dosyasını açın.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);

// İkinci Excel dosyasını açın.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);

// Hedef Çalışma Kitabı oluşturun.
Workbook destWorkbook = new Workbook();

// İlk çalışma sayfası varsayılan olarak Çalışma Kitabına eklenir. İkinci çalışma sayfasını ekleyin.
destWorkbook.getWorksheets().add();

// İlk Excel dosyasının Ocak çalışma sayfasını hedef dosyaya kopyalayın.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));

// İkinci Excel dosyasının Temmuz çalışma sayfasını hedef dosyaya kopyalayın.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));

// Varsayılan olarak çalışma sayfası adları sırasıyla "Sayfa1" ve "Sayfa2"dir.
// Onlara anlamlı isimler verelim.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");

// Hedef dosyayı kaydedin.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");
Java Kullanarak Birden Fazla Excel Dosyasının Belirli Çalışma Sayfalarını Tek Bir Dosyada Birleştirme

Java Kullanarak Birden Fazla Excel Dosyasının Belirli Çalışma Sayfalarını Tek Bir Dosyada Birleştirme

Workbook sınıfının getWorksheets() özellik yöntemi, bir Çalışma Kitabındaki tüm çalışma sayfalarının bir koleksiyonunu döndürür. add() yöntemini kullanarak çalışma sayfaları koleksiyonuna bir çalışma sayfası ekleyebilirsiniz.

Bu API’nin Worksheet sınıfı tek bir çalışma sayfasını temsil eder. Bir çalışma sayfasıyla çalışmak için çeşitli özellikler ve yöntemler sağlar. Bu sınıfın copy() yöntemi, içeriği ve formatları başka bir çalışma sayfasından kopyalar. Worksheet sınıfı ayrıca belirli bir çalışma sayfasını indeksine veya adına göre almak için get() yöntemlerini de sağlar. setName() özellik yöntemi, çalışma sayfasının adını ayarlar.

Java Birden Fazla Çalışma Sayfasını Tek Bir Çalışma Sayfasında Birleştirme

Aşağıda belirtilen adımları izleyerek, bir Excel dosyasının birden çok çalışma sayfasını programlı olarak tek bir çalışma sayfasında kolayca birleştirebilirsiniz:

  • Kaynak dosya için Workbook sınıfının bir örneğini oluşturun
  • add() yöntemini kullanarak yeni bir çalışma sayfası ekleyin
  • Kaynak çalışma sayfaları üzerinde yineleyin ve aşağıdakileri yapın:
    • createRange() yöntemini kullanarak bir çalışma sayfası için bir dizi hücre ve sütun oluşturun
    • copy() yöntemini kullanarak verileri bir kaynak aralığından hedef aralığa kopyalayın
  • Workbook sınıfının save() yöntemini çağırarak çıktı dosyasını kaydedin.

Aşağıdaki kod örneği, Java kullanarak birden çok çalışma sayfasının tek bir çalışma sayfasında nasıl birleştirileceğini gösterir.

// Çalışma sayfalarını içeren bir Excel dosyasını açın:
// Ocak, Şubat, Mart ve Nisan
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Özet_sayfa adlı bir çalışma sayfası ekleyin
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Verileri kopyalamak için kaynak çalışma sayfalarını yineleyin
// özet çalışma sayfası
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;

for (String sheetName : nameOfSourceWorksheets)
{
  // Çalışma sayfasını al
    Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

    Range sourceRange = null;
    Range destRange = null;

    // Ocak çalışma sayfası olması durumunda, tüm satırları ve sütunları ekleyin.
    if (sheetName.equals("Jan"))
    {
        sourceRange = sourceSheet.getCells().getMaxDisplayRange();

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }
    // Diğer çalışma sayfalarında ise
    // (başlıkları içeren) ilk satırı hariç tutun.
    else
    {
        int mdatarow = sourceSheet.getCells().getMaxDataRow(); // Zero-based
        int mdatacol = sourceSheet.getCells().getMaxDataColumn(); // Zero-based
        sourceRange = sourceSheet.getCells().createRange(0 + 1, 0, mdatarow, mdatacol + 1);

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount -1,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }

    // Verileri, biçimlendirmeyi, nesneleri çizmeyi vb. bir dosyadan kopyalar.
    // kaynak aralığından hedef aralığına.
    destRange.copy(sourceRange);
    totalRowCount = sourceRange.getRowCount() + totalRowCount;
}

// Çalışma kitabını kaydet 
workbook.save("C:\\Files\\Summarized.xlsx");
Java kullanarak Birden Çok Çalışma Sayfasını Tek Çalışma Sayfasında Birleştirme

Java kullanarak Birden Çok Çalışma Sayfasını Tek Çalışma Sayfasında Birleştirme

Worksheet sınıfının getCells() özellik yöntemi, çalışma sayfasında bulunan Hücrelerin toplanmasını sağlar. API’nin Cells sınıfı, Cell, Row vb. gibi bir hücreyle ilgili nesnelerin bir koleksiyonunu temsil eder. getMaxDisplayRange() özelliği Cells sınıfının yöntemi, verileri, birleştirilmiş hücreleri ve şekilleri içeren maksimum aralığı sağlar. Range sınıfı, bir elektronik tablodaki bir hücre aralığını temsil eder.

Cells sınıfı, bir hücre aralığı oluşturmak için aşağıdaki yöntemleri sağlar:

  • Hücre satırlarından veya hücre sütunlarından bir Range nesnesi oluşturmak için createRange(int FirstIndex, int number, boolean isVertical) yöntemi.
  • createRange(int FirstRow, int FirstColumn, int totalRows, int totalColumns) yöntemi, bir hücre aralığından bir Range nesnesi oluşturur.
  • createRange(java.lang.String adresi) yöntemi, aralığın adresinden bir Range nesnesi oluşturur.
  • createRange(java.lang.String UpperLeftCell, Java.lang.String LowerRightCell) yöntemi, bir hücre aralığından bir Range nesnesi oluşturur.

Range sınıfının copy() yöntemi, her türlü veriyi (formüller dahil), biçimlendirmeyi, çizim nesnelerini vb. bir kaynak aralıktan hedef aralığa kopyalar.

Java Kullanarak Birden Çok Çalışma Sayfasının Sütunlarını Tek Bir Sayfada Birleştirme

Aşağıda belirtilen adımları izleyerek birden çok çalışma sayfasının sütunlarını programlı olarak tek bir çalışma sayfasında kolayca birleştirebilirsiniz:

  • Kaynak dosya için Workbook sınıfının bir örneğini oluşturun
  • add() yöntemini kullanarak yeni bir çalışma sayfası ekleyin
  • Kaynak çalışma sayfaları üzerinde yineleyin ve aşağıdakileri yapın:
    • Kaynak çalışma sayfası hücreleri ve sütun dizini ile copyColumn() yöntemini kullanarak tüm sütunları tek tek kopyalayın
  • Workbook sınıfının save() yöntemini çağırarak çıktı dosyasını kaydedin.

Aşağıdaki kod örneği, Java kullanarak birden çok çalışma sayfasının sütunlarının tek bir çalışma sayfasında nasıl birleştirileceğini gösterir.

// Bir Çalışma Kitabı açın.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");

// Özet_sayfa adlı bir çalışma sayfası ekleyin
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Sütunları kopyalamak için çalışma sayfalarını yineleyin
// özet çalışma sayfası
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0; 

for (String sheetName : nameOfSourceWorksheets) {
  Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

  if (sheetName.equals("Products")) {
    // Çalışma sayfası sütunları koleksiyonunu alın
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // sütunu summaySheet'e kopyala
   for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
    }
  else {
    // Çalışma sayfası sütunları koleksiyonunu alın
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // sütunu summaySheet'e kopyala
   for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
  }
}

// Excel dosyasını kaydedin.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");
Java Kullanarak Birden Çok Çalışma Sayfasının Sütunlarını Tek Bir Sayfada Birleştirme

Java Kullanarak Birden Çok Çalışma Sayfasının Sütunlarını Tek Bir Sayfada Birleştirme

Cells sınıfının getColumns() özellik yöntemi, çalışma sayfasında bulunan sütunların toplanmasını sağlar. ColumnCollection sınıfı bir çalışma sayfasındaki tek tek sütunların koleksiyonunu temsil ederken, Column sınıfı bir çalışma sayfasındaki tek bir sütunu temsil eder.

Cells sınıfının copyColumn() yöntemi, tüm sütunun verilerini ve formatlarını kopyalar. Cells sınıfı aynı zamanda PasteOptions, sütun numarası, kaynak ve hedef toplam sütunları vb. ile verileri kopyalamak için aşırı yüklenmiş copyColumn() yöntemlerini de sağlar.

Ücretsiz Lisans Alın

Ücretsiz bir geçici lisans talep ederek API’yi değerlendirme sınırlamaları olmadan deneyebilirsiniz.

Çözüm

Bu makalede birden fazla Excel dosyasını tek bir dosyada nasıl birleştireceğinizi öğrendiniz. Ayrıca Java kullanarak birden çok Excel dosyasından oluşan belirli çalışma sayfalarını nasıl birleştireceğinizi de öğrendiniz. Üstelik birden çok çalışma sayfasını programlı olarak tek bir çalışma sayfasında nasıl birleştireceğinizi öğrendiniz. Bu makalede ayrıca Java kullanılarak birden fazla çalışma sayfasındaki sütunların nasıl tek bir sütunda birleştirileceği açıklanmaktadır. Aspose.Cells for Java API hakkında daha fazla bilgiyi belgeleri kullanarak öğrenebilirsiniz. Herhangi bir belirsizlik durumunda lütfen forum üzerinden bizimle iletişime geçmekten çekinmeyin.

Ayrıca bakınız