Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
range.transpose() yöntemini kullanır ve tüm Excel sürümlerinde çalışır; ikinci yöntem cell.setDynamicArrayFormula() kullanarak modern bir dinamik dizi =TRANSPOSE(...) formülünü yazar ve bu formül Excel 365 veya Excel 2021’de otomatik olarak dökülür. Üçüncü yaklaşım cell.setArrayFormula() kullanarak eski Excel sürümleriyle uyumlu klasik Ctrl+Shift+Enter (CSE) dizi formülünü yazar. Bu makale, adım adım talimatlar ve tam kod örnekleriyle her yaklaşımı anlatır.
Bir aralığı transpoze etmek, satır olanın sütun, sütun olanın ise satır haline gelmesiyle dönüştürülmesi demektir; bu, verileri ana köşegen boyunca yansıtmak anlamına gelir. Microsoft Excel’de, çalışma sayfası işlevi TRANSPOSE bu işlemi gerçekleştirir ve kavramsal referans şu adreste belgelenmiştir: https://support.microsoft.com/en-us/excel/functions/transpose-function. Bu kavram, bir hücre aralığına programlı olarak uygulanabilir ve birçok iş ve raporlama senaryosunda kullanışlıdır.
| Bölge | Avrupa | Asya | Kuzey Amerika |
|---|---|---|---|
| Çeyrek 1 | 21704714 | 8774099 | 12094215 |
| Çeyrek 2 | 17987034 | 12214447 | 10873099 |
| Çeyrek 3 | 19485029 | 14356879 | 15689543 |
| Çeyrek 4 | 22567894 | 15763492 | 17456723 |
| Makale, Aspose.Cells for JavaScript via C++ kullanarak bu verileri transpoze etmenin üç farklı yolunu sunar; her biri farklı bir Excel sürümü ve kullanım durumuna uygundur. |
Bu yaklaşımı, TRANSPOSE çalışma sayfası işlevini kullanmadan verileri transpoze etmek istediğinizde kullanın. Tüm Excel sürümlerinde çalışır ve dinamik dizilere bağımlılığı yoktur; bu da onu sürüm geçişi açısından en güvenli seçenek haline getirir. Yalnızca son transpoze edilmiş çıktıya ihtiyacınız olduğunda ve orijinal TRANSPOSE formülünü çalışma kitabında tutmak istemediğinizde idealdir.
Range.transpose() yöntemi, Aspose.Cells.Range sınıfının bir örnek metodudur. Çağırıldığında, satır ve sütunları değiştirerek aralığı yerinde döndürür; böylece satır olan sütun, sütun olan ise satır hâline gelir. Metot, bir formül yazmadan doğrudan alttaki hücreleri değiştirir.
LoadOptions‘ı .xlsx formatına ayarlayarak kaynak çalışma kitabını new Workbook(srcFile, new LoadOptions(LoadFormat.Xlsx)) şeklinde açın.workbook.getWorksheets().get(0) koduyla ilk çalışma sayfasını alın.worksheet.getCells() ile erişin.cells.createRange("A1:D5") çağrısıyla A1:D5 aralığını oluşturun.source.transpose() çağırın.workbook.save(outputFile) ile kaydedin.<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Aspose.Cells Example</h1>
<input type="file" id="fileInput" accept=".xlsx" />
<button id="runExample">Run Example</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, SaveFormat } = AsposeCells;
AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: ["arial.ttf", "NotoSansSC-Regular.ttf"]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
const fileInput = document.getElementById('fileInput');
const downloadLink = document.getElementById('downloadLink');
const result = document.getElementById('result');
if (!fileInput.files.length) {
result.innerHTML = '<p style="color: red;">Please select an .xlsx file.</p>';
return;
}
try {
const file = fileInput.files[0];
const workbook = new Workbook(new Uint8Array(await file.arrayBuffer()));
const worksheet = workbook.worksheets.get(0);
const cells = worksheet.cells;
const source = cells.createRange("A1:D5");
source.transpose();
const outputData = workbook.save(SaveFormat.Xlsx);
const blob = new Blob([outputData], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
});
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "transposed.xlsx";
downloadLink.style.display = "block";
result.innerHTML = '<p style="color: green;">Done! Click the download link to get the result file.</p>';
} catch (error) {
console.error(error);
result.innerHTML = '<p style="color: red;">An error occurred while processing the file.</p>';
}
});
</script>
</html>
Kaynak veri değiştiğinde sonuç otomatik olarak güncellenmesi amacıyla =TRANSPOSE(A1:D5) formülünü çıktı çalışma kitabında canlı tutmak ve hedef Excel dosyasının Excel 365 / Excel 2021 veya daha yeni bir sürümde açılacağını, dinamik diziler ve dökülme operatörünün desteklendiğini varsaydığınızda bu yaklaşımı kullanın.
Cell.setDynamicArrayFormula(formula, options, calculateValue) yöntemi, Aspose.Cells.Cell sınıfının bir metodudur ve hücrenin formülünü dinamik dizi formülü olarak ayarlar. Excel formülü bir kez değerlendirir ve sonucu otomatik olarak çevresindeki hücrelere döker. Üçüncü parametre true olarak ayarlandığında, Aspose.Cells’in yazma zamanında ortaya çıkan değerleri de hesaplamasını sağlar.
new Workbook(srcFile, new LoadOptions(LoadFormat.Xlsx)) kullanarak kaynak çalışma kitabını yükleyin.cells.get("A6").setDynamicArrayFormula("=TRANSPOSE(A1:D5)", new FormulaParseOptions(), true) çağrısı ile yerleştirin.new FormulaParseOptions() bağımsız değişkeni varsayılan FormulaParseOptions ayarlarını kullanır ve üçüncü bağımsız değişken true, Aspose.Cells’e formülü dinamik dizi olarak ele almasını ve dökülen değerlerin çalışma kitabına yazılmasını söyler.workbook.save(outputFile) ile kaydedin.=TRANSPOSE(A1:D5) formülünü tutar ve Excel sonucu otomatik olarak A6:E9 bölgesine döker; bu, transpoze edilmiş veri ile eşleşen 4 satır ve 5 sütunluk bir bloktur.<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Aspose.Cells Example</h1>
<input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
<button id="runExample">Run Example</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, FormulaParseOptions } = AsposeCells;
const initialization = AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: ["arial.ttf", "NotoSansSC-Regular.ttf"]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
await initialization;
const fileInput = document.getElementById('fileInput');
const downloadLink = document.getElementById('downloadLink');
const result = document.getElementById('result');
if (!fileInput.files.length) {
result.innerHTML = '<p style="color: red;">Please select an Excel file.</p>';
return;
}
const workbook = new Workbook(new Uint8Array(await fileInput.files[0].arrayBuffer()));
const worksheet = workbook.worksheets.get(0);
const cells = worksheet.cells;
cells.get("A6").setDynamicArrayFormula(
"=TRANSPOSE(A1:D5)",
new FormulaParseOptions(),
true
);
const outputData = workbook.save(AsposeCells.SaveFormat.Xlsx);
const blob = new Blob([outputData]);
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "output_transpose_dynamic.xlsx";
downloadLink.style.display = "block";
result.innerHTML = '<p style="color: green;">Done! Click the download link to get the result file.</p>';
});
</script>
</html>
Bu yaklaşımı, TRANSPOSE formülünün çalışma kitabında korunmasını istediğinizde, ancak hedef Excel dosyasının eski Excel sürümlerinde (2021 öncesi, 2019, 2016, 2013 ve benzeri) açılabileceği ve dinamik dizi dökülmesinin desteklenmediği durumlarda kullanın.
Cell.setArrayFormula(arrayFormula, nRows, nColumns) yöntemi, Aspose.Cells.Cell sınıfının bir metodudur ve klasik dizi (CSE) formülünü köşe hücresine atar ve ortaya çıkan dizinin boyutlarını bildirir. Aspose.Cells, çok hücreli dizi-formül işaretleyicisini yazar; böylece Excel formülü tek bir dizi ifadesi olarak değerlendirir ve belirtilen aralığı doldurur.
cells.get("A6").setArrayFormula("=TRANSPOSE(A1:D5)", 4, 5) çağrısını yapın. İkinci bağımsız değişken 4, hedef dizinin satır sayısını; üçüncü bağımsız değişken 5 ise sütun sayısını belirtir.workbook.save(outputFile) ile kaydedin.TRANSPOSE ifadesini değerlendirmek için klasik Excel yoludur ve bu yaklaşım tüm Excel sürümlerinde evrensel olarak uyumludur.
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Aspose.Cells Example</h1>
<input type="file" id="fileInput" accept=".xlsx" />
<button id="runExample">Run Example</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, LoadOptions } = AsposeCells;
const initialization = AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: ["arial.ttf", "NotoSansSC-Regular.ttf"]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
try {
await initialization;
const fileInput = document.getElementById('fileInput');
const downloadLink = document.getElementById('downloadLink');
const result = document.getElementById('result');
const file = fileInput.files[0];
if (!file) {
throw new Error("Please select an XLSX workbook.");
}
// Kaynak çalışma kitabını xlsx LoadOptions ile yükle
const loadOptions = new LoadOptions(AsposeCells.LoadFormat.Xlsx);
const workbook = new Workbook(
new Uint8Array(await file.arrayBuffer()),
loadOptions
);
// İlk çalışma sayfasına ve onun Cells koleksiyonuna eriş
const worksheet = workbook.worksheets.get(0);
const cells = worksheet.cells;
// A6 hücresine klasik CSE dizi formülünü ayarla.
// Formül =TRANSPOSE(A1:D5), 5 satır x 4 sütun kaynak aralığını döndürür
// 4 satır x 5 sütunluk bir diziye. İkinci argüman (4) satır sayısıdır
// ve üçüncü argüman (5) oluşan dizinin sütun sayısıdır.
// Aspose.Cells, CSE dizi-formül işaretçisini yazar, böylece Excel bunu şu şekilde değerlendirir:
// tek bir çok hücreli dizi formülü olarak, daha eski Excel sürümleriyle uyumlu
// (2019, 2016, 2013, vb.) dinamik dizi taşmasını desteklemeyen.
cells.get("A6").setArrayFormula("=TRANSPOSE(A1:D5)", 4, 5);
// Çalışma kitabını kaydedin, böylece dizi-formül işaretçisi kalıcı olur
const outputData = workbook.save(AsposeCells.SaveFormat.Xlsx);
const blob = new Blob([outputData], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
});
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "output.xlsx";
downloadLink.style.display = "block";
result.innerHTML = '<p style="color: green;">Done! Click the download link to get the result file.</p>';
} catch (error) {
console.error(error);
document.getElementById('result').innerHTML =
'<p style="color: red;">Error: ' + error.message + '</p>';
}
});
</script>
</html>
| Yaklaşım | API / Metod | Excel Sürümü | Kaynak formül korundu? | Çıktı aralığı |
|---|---|---|---|---|
| Yaklaşım 1 — Yerinde transpoze | range.transpose() |
Tüm Excel sürümleri | Hayır (sadece değerler) | İlk köşe aralığı, 5×4 |
| Yaklaşım 2 — Dinamik dizi formülü | cell.setDynamicArrayFormula() |
Excel 365 / 2021+ | Evet (dinamik olarak dökülür) | Köşeden dökülür |
| Yaklaşım 3 — Klasik dizi formülü (CSE) | cell.setArrayFormula() |
Tüm Excel sürümleri | Evet (çok hücreli dizi formülü) | Açık boyut, 4×5 |
| Yaklaşım 1‘i, hızlı bir dönüşüm gerektiğinde ve sadece transpoze edilmiş değerlerin dosyaya yazılması yeterli olduğunda kullanın. Yaklaşım 2‘yi, modern Excel’in kesinlikle kullanılacağı ve formülün canlı kalmasını, kaynak değiştiğinde güncellenmesini istediğinizde tercih edin. Yaklaşım 3‘ü ise, tüm Excel sürümlerinde, dinamik dizi desteği olmayan eski sürümler dahil, korunan bir formül ile en geniş uyumluluğa ihtiyaç duyduğunuzda seçin. |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.