Excel Dosyalarını Birden Çok Dosyaya Bölme
Giriş
Bir geliştiricinin tek bir Excel dosyasını birkaç daha küçük dosyaya ayırması gerektiği birçok gerçek dünya senaryosu vardır. Örneğin, bir çalışma kitabı her departman için bir çalışma sayfası içerebilir ve her departman başkanının yalnızca kendi sayfasını alması gerekir. Diğer durumlarda, bir çalışma sayfasından belirli bir tabloyu veya veri bloğunu çıkarmak ve çalışma kitabının geri kalanını açığa çıkarmadan e-posta yoluyla bağımsız bir dosya olarak göndermek isteyebilirsiniz. Büyük birleştirilmiş çalışma kitaplarının da daha kolay işlenebilmesi, daha hızlı yüklenebilmesi veya diğer sistemler tarafından sonraki işlemler için daha küçük parçalara bölünmesi gerekebilir.
Aspose.Cells bu görev için iki esnek yaklaşım sunar. İlk yaklaşım, kaynak çalışma kitabındaki her çalışma sayfasını yineleyerek içeriğini yepyeni bir Workbook örneğine kopyalar ve her birini ayrı bir dosya olarak kaydeder. İkinci yaklaşım, bir çalışma sayfası içindeki belirli bir hücre aralığına odaklanır ve yalnızca o aralığı yeni bir çalışma kitabına kopyalar. Her iki durumda da genel akış aynıdır: Workbook sınıfını kullanarak kaynak çalışma kitabını yükleyin, Worksheet ve Cells nesneleri aracılığıyla ilgili verilere erişin, içeriği hedef Workbook‘a aktarın ve ardından hedefi diske kaydedin.
Her Çalışma Sayfasını Yeni Bir Çalışma Kitabına Kopyalayarak Excel Dosyası Bölme
Yaklaşım Genel Bakış
Bu yaklaşımda, kaynak çalışma kitabı bir kez açılır ve ardından Worksheets koleksiyonundaki her Worksheet için yeni bir hedef Workbook oluşturulur. Ardından kaynak çalışma sayfasının içeriği hedef çalışma kitabının ilk çalışma sayfasına kopyalanır ve hedef çalışma kitabı, adı kaynak çalışma sayfasının adından türetilen bir dosya olarak kaydedilir. Sonuç, her çalışma sayfası için bir çıktı dosyasıdır ve her çıktı dosyası tek bir kaynak sayfanın verilerini içerir.
Kaynak çalışma kitabınızdaki her çalışma sayfası mantıksal olarak bağımsız bir bilgi birimini (departman, bölge, ay veya ürün hattı gibi) temsil ettiğinde ve her birimi kendi başına teslim etmek veya işlemek istediğinizde bu yöntem doğru seçimdir.
Adımlar
Aşağıdaki adımlar, her çalışma sayfasını yeni bir çalışma kitabına kopyalayarak bir Excel dosyasının nasıl bölüneceğini açıklar:
- Bir
Workbooknesnesi oluşturarak ve dosya yolunu yapıcısına ileterek kaynak Excel dosyasını açın. forveyaforEachdöngüsü kullanarakWorkbook.Worksheetskoleksiyonu boyunca ilerleyin, böylece kaynak dosyadaki herWorksheetişlenir.- Döngü içinde, mevcut çalışma sayfası için yeni bir hedef
Workbookörneği (boş bir çalışma kitabı) oluşturun. - Hedef çalışma kitabına yeni bir
Worksheetekleyin (veya varsayılan ilk çalışma sayfasını kullanın) ve anlamlı bir ad atayın; ideal olarak kaynak çalışma sayfasınınNameözelliğiyle aynı olmalıdır. - Kaynak çalışma sayfasının içeriğini hedef çalışma sayfasına kopyalayın. Bu, kaynak çalışma sayfasının
Cellskoleksiyonundaki hücreler üzerinde yineleme yapılarak ve değerlerinin hedef çalışma sayfasının ilgili hücrelerine yazılmasıyla veya tüm bir aralığı bir seferde aktarmak içinCells.copyyöntemi kullanılarak yapılabilir. - Kaynak çalışma sayfasının adını içeren bir çıktı dosya yolu oluşturun (örneğin,
dataDir + worksheet.Name + ".xls") böylece oluşturulan her dosyanın benzersiz bir adı olsun. - Dosyayı diske yazmak için hedef
Workbook.saveyöntemini çağırın. - Tüm çalışma sayfaları işlenene kadar sonraki çalışma sayfası için 3 ila 7. adımları tekrarlayın.
Kod Örneği
const AsposeCells = require("aspose.cells");
const dataDir = "data/";
const workbook = new AsposeCells.Workbook(dataDir + "book1.xls");
for (let i = 0; i < workbook.getWorksheets().getCount(); i++) {
const sourceSheet = workbook.getWorksheets().get(i);
const sheetName = sourceSheet.getName();
const destWorkbook = new AsposeCells.Workbook();
const destIndex = destWorkbook.getWorksheets().add();
const destSheet = destWorkbook.getWorksheets().get(destIndex);
destSheet.setName(sheetName);
destSheet.copy(sourceSheet);
const destFile = dataDir + sheetName + ".xls";
destWorkbook.save(destFile, AsposeCells.SaveFormat.Excel97To2003);
}
Beklenen çıktı, veri dizininde kaynak çalışma kitabındaki her çalışma sayfası için bir dosya olmak üzere yeni bir dosya kümesidir. Her dosya, karşılık gelen kaynak sayfanın adıyla adlandırılır ve dosya o tek sayfanın verilerini (ve isteğe bağlı olarak biçimlendirmesini) içerir.
Bir Aralığı Yeni Bir Çalışma Kitabına Kopyalayarak Excel Dosyası Bölme
Yaklaşım Genel Bakış
Bazen bölmeniz gereken veriler, tüm bir çalışma sayfasına değil, çalışma sayfasının A1:D10 veya belirli bir tabloyu temsil eden adlandırılmış bir aralık gibi belirli bir dikdörtgen bölgesine karşılık gelir. Bu durumlarda, tüm çalışma sayfalarını kopyalamak israf olur ve daha hassas bir yaklaşım gereklidir: kaynak aralığı belirleyin, yalnızca o aralığı yeni bir çalışma kitabına kopyalayın ve yeni dosyayı kaydedin.
Bu yaklaşım, ilgisiz tüm içeriği atarken daha büyük bir çalışma sayfasından tek bir tabloyu, rapor bloğunu veya veri alanını çıkarmak istediğinizde idealdir. Bir sayfanın kullanıcı tarafından seçilen bölgelerini bağımsız dosyalar olarak dışa aktarmak için de yararlıdır.
Adımlar
Aşağıdaki adımlar, belirli bir aralığı yeni bir çalışma kitabına kopyalayarak bir Excel dosyasının nasıl bölüneceğini açıklar:
- Bir
Workbooknesnesini dosya yoluyla örnekleyerek kaynak Excel dosyasını açın. - Kopyalamak istediğiniz aralığı içeren hedef
Worksheet‘i, dizine (örneğin, ilk sayfa) veyaWorksheetskoleksiyonundan ada göre alın. - Kopyalanacak aralığı belirleyin. Bu,
A1:C10gibi sabit kodlanmış bir hücre aralığı veyaWorksheet.Cellskoleksiyonu aracılığıyla elde edilen adlandırılmış bir aralık veyaWorksheet.Cells.createRangearacılığıyla oluşturulan bir aralık olabilir. - Yeni bir hedef
Workbookörneği oluşturun. - Hedef çalışma kitabının ilk
Worksheet‘ine (varsayılan sayfa) erişin. - Kaynak aralığını, genellikle
A1hücresinden başlayarak hedef çalışma sayfasına kopyalayın. HedefCellskoleksiyonundakiCells.copyyöntemi, tüm bir aralığı kopyalamak için kullanılabilir veya kaynak aralığın hücrelerinde yineleme yapabilir ve değerleriniputValueile hedef hücrelere yazabilirsiniz. Ne aktarıldığını kontrol etmek için isteğe bağlıCopyOptionssağlanabilir (yalnızca değerler, değerler ve stiller, formüller vb.). Workbook.saveyöntemini kullanarak hedef çalışma kitabını diskte yeni bir dosya yoluna kaydedin.
Kod Örneği
const AsposeCells = require("aspose.cells");
// Veri dizinini ve dosya yollarını tanımlayın
const dataDir = "data/";
const sourcePath = dataDir + "book1.xls";
const outputPath = dataDir + "outputrange.xls";
// Kaynak Excel dosyasını açın
const sourceWorkbook = new AsposeCells.Workbook(sourcePath);
// Kaynak çalışma kitabından ilk çalışma sayfasını alın
const sourceWorksheet = sourceWorkbook.getWorksheets().get(0);
// A1:C10 kaynak hücre aralığını tanımlayın (0. satır, 0. sütundan başlayan 10 satır, 3 sütun)
const sourceRange = sourceWorksheet.getCells().createRange(0, 0, 10, 3);
// Yeni bir hedef çalışma kitabı oluşturun
const destWorkbook = new AsposeCells.Workbook();
// Hedef çalışma kitabındaki ilk çalışma sayfasına erişin
const destWorksheet = destWorkbook.getWorksheets().get(0);
// Kaynak aralıkla aynı boyutlarda A1'de hedef aralık oluşturun
const destRange = destWorksheet.getCells().createRange(0, 0, 10, 3);
// Kaynak aralığı hedef aralığa kopyalayın
destRange.copy(sourceRange);
// Hedef çalışma kitabını yeni bir .xls dosyasına kaydedin
destWorkbook.save(outputPath, AsposeCells.SaveFormat.Excel97To2003);
Beklenen çıktı, veri dizininde kaynak çalışma kitabından çıkarılan belirtilen aralığın yalnızca değerlerini (ve isteğe bağlı olarak biçimlendirmesini) içeren tek bir yeni dosyadır. Hedef dosyanın kaynak dosyadaki başka herhangi bir veriyle ilişkisi yoktur; yalnızca ilk çalışma sayfasının A1 hücresinden başlayarak çıkarılan aralığı içerir.