Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
range.transpose() sul posto e funziona su ogni versione di Excel, mentre il secondo utilizza cell.setDynamicArrayFormula() per scrivere una moderna formula matrice dinamica =TRANSPOSE(...) che si espande automaticamente in Excel 365 o Excel 2021. Il terzo approccio utilizza cell.setArrayFormula() per scrivere una classica formula matrice di tipo Ctrl+Shift+Enter (CSE) compatibile con le versioni più vecchie di Excel. Questo articolo illustra ciascun approccio con istruzioni passo-passo ed esempi di codice completi.
Trasporre un intervallo significa ruotarlo in modo che ciò che era una riga diventi una colonna e ciò che era una colonna diventi una riga, riflettendo di fatto i dati rispetto alla diagonale principale. In Microsoft Excel, la funzione del foglio di lavoro TRANSPOSE esegue questa operazione, e il riferimento concettuale è documentato all’indirizzo https://support.microsoft.com/en-us/excel/functions/transpose-function. La stessa idea può essere applicata a livello di codice a un intervallo di celle, il che è utile in molti scenari aziendali e di reportistica.
Gli scenari comuni in cui la trasposizione risulta utile includono i seguenti.
| Region | Europe | Asia | North America |
|---|---|---|---|
| Qtr 1 | 21704714 | 8774099 | 12094215 |
| Qtr 2 | 17987034 | 12214447 | 10873099 |
| Qtr 3 | 19485029 | 14356879 | 15689543 |
| Qtr 4 | 22567894 | 15763492 | 17456723 |
| L’articolo presenta quindi tre diversi modi per trasporre questi dati utilizzando Aspose.Cells for Node.js via C++, ciascuno adatto a una diversa versione di Excel e a un diverso caso d’uso. |
Utilizzare questo approccio ogni volta che si desidera trasporre i dati senza coinvolgere la funzione del foglio di lavoro TRANSPOSE. Funziona su ogni versione di Excel e non ha dipendenze dalle matrici dinamiche, il che lo rende l’opzione più sicura e compatibile tra le versioni. È ideale quando si ha bisogno solo dell’output trasposto finale e non si desidera mantenere la formula TRANSPOSE originale nella cartella di lavoro.
range.transpose() è un metodo di istanza sulla classe Aspose.Cells.Range. Richiamandolo, l’intervallo viene capovolto sul posto scambiando le righe e le colonne, quindi ciò che era una riga diventa una colonna e ciò che era una colonna diventa una riga. Il metodo modifica direttamente le celle sottostanti senza scrivere alcuna formula.
LoadOptions impostato sul formato .xlsx richiamando new Workbook(srcFile, new LoadOptions(LoadFormat.Xlsx)).workbook.getWorksheets().get(0).worksheet.getCells().cells.createRange("A1:D5").source.transpose() per ruotare l’intervallo sul posto, scambiando righe e colonne.workbook.save(outputFile).
Dopo la trasposizione, lo stesso intervallo di ancoraggio contiene i dati ruotati. La prima riga è (vuoto, Europe, Asia, North America) e la prima colonna è (vuoto, Qtr 1, Qtr 2, Qtr 3, Qtr 4). Ogni colonna di vendite originale diventa una riga nell’intervallo trasposto.var srcFile = "source.xlsx";
var outputFile = "transposed.xlsx";
var workbook = new AsposeCells.Workbook(srcFile, new AsposeCells.LoadOptions(AsposeCells.LoadFormat.Xlsx));
var worksheet = workbook.getWorksheets().get(0);
var cells = worksheet.getCells();
var source = cells.createRange("A1:D5");
source.transpose();
workbook.save(outputFile);
Utilizzare questo approccio quando si desidera conservare la formula =TRANSPOSE(A1:D5) come formula attiva nella cartella di lavoro di output, in modo che il risultato si aggiorni automaticamente se i dati di origine cambiano, e il file Excel di destinazione verrà aperto in Excel 365 / Excel 2021 o versioni successive dove sono supportate le matrici dinamiche e l’operatore di spill.
cell.setDynamicArrayFormula(string formula, FormulaParseOptions options, bool calculateValue) è un metodo su Aspose.Cells.Cell che imposta la formula della cella come formula matrice dinamica. Excel valuta la formula una sola volta ed espande automaticamente il risultato nelle celle circostanti. Il terzo parametro, quando è impostato su true, indica ad Aspose.Cells di calcolare anche i valori risultanti al momento della scrittura.
new Workbook(srcFile, new LoadOptions(LoadFormat.Xlsx)).Cells.cells.get("A6").setDynamicArrayFormula("=TRANSPOSE(A1:D5)", null, true).null passa le FormulaParseOptions predefinite, e il terzo argomento true indica ad Aspose.Cells di trattare la formula come una matrice dinamica e di valutarla in modo che i valori espansi vengano scritti nella cartella di lavoro.workbook.save(outputFile).
La cella A6 contiene la formula =TRANSPOSE(A1:D5) ed Excel espande automaticamente il risultato nella regione A6:D10, un blocco di 5 righe per 4 colonne pari ai dati trasposti.const AsposeCells = require("aspose.cells");
const srcFile = "source.xlsx";
const outFile = "output_transpose_dynamic.xlsx";
const opts = new AsposeCells.LoadOptions(AsposeCells.LoadFormat.Xlsx);
const workbook = new AsposeCells.Workbook(srcFile, opts);
const worksheet = workbook.getWorksheets().get(0);
const cells = worksheet.getCells();
cells.get("A6").setDynamicArrayFormula("=TRANSPOSE(A1:D5)", new AsposeCells.FormulaParseOptions(), true);
workbook.save(outFile, AsposeCells.SaveFormat.Xlsx);
Utilizzare questo approccio quando si desidera conservare una formula TRANSPOSE nella cartella di lavoro ma il file Excel di destinazione potrebbe essere aperto in versioni più vecchie di Excel (pre-2021, inclusi 2019, 2016, 2013 e così via) dove l’espansione delle matrici dinamiche non è supportata. La classica formula matrice CSE (Ctrl+Shift+Enter) è l’alternativa compatibile con le versioni legacy che tutte le versioni di Excel possono valutare.
cell.setArrayFormula(string arrayFormula, int nRows, int nColumns) è un metodo su Aspose.Cells.Cell che assegna una formula matrice classica (CSE) alla cella di ancoraggio e dichiara le dimensioni della matrice risultante. Aspose.Cells scrive il marcatore di formula matrice multi-cella in modo che Excel valuti la formula come una singola espressione matriciale che riempie l’intervallo dichiarato.
Cells.cells.get("A6").setArrayFormula("=TRANSPOSE(A1:D5)", 4, 5). Il secondo argomento 4 è il numero di righe della matrice di destinazione e il terzo argomento 5 è il numero di colonne.workbook.save(outputFile).
La cella A6 è l’ancoraggio della formula matrice e la matrice valutata si estende su 4 righe per 5 colonne a partire da A6, corrispondendo alle dimensioni trasposte dell’origine A1:D5. Excel scrive un singolo marcatore di formula matrice attraverso l’intervallo risultante in modo che le versioni più vecchie di Excel la valutino correttamente.TRANSPOSE e questo approccio è universalmente compatibile tra le versioni di Excel.
const AsposeCells = require("aspose.cells");
// Carica la cartella di lavoro sorgente con LoadOptions xlsx
const srcFile = "source.xlsx";
const workbook = new AsposeCells.Workbook(srcFile, new AsposeCells.LoadOptions(AsposeCells.LoadFormat.Xlsx));
// Accedi al primo foglio di lavoro e alla sua raccolta Cells
const worksheet = workbook.getWorksheets().get(0);
const cells = worksheet.getCells();
// Imposta la formula array CSE classica sulla cella A6.
// La formula =TRANSPOSE(A1:D5) ruota l'intervallo sorgente di 5 righe x 4 colonne
// in un array di 4 righe x 5 colonne. Il secondo argomento (4) è il numero di righe
// e il terzo argomento (5) è il numero di colonne dell'array risultante.
// Aspose.Cells scrive il marcatore di formula array CSE in modo che Excel la valuti come
// una singola formula array multi-cella, compatibile con le versioni precedenti di Excel
// (2019, 2016, 2013, ecc.) che non supportano lo spilling dinamico dell'array.
cells.get("A6").setArrayFormula("=TRANSPOSE(A1:D5)", 4, 5);
// Salva la cartella di lavoro in modo che il marcatore della formula array venga mantenuto
workbook.save("output.xlsx");
| Approccio | API / Metodo | Versione di Excel | Formula di origine conservata? | Intervallo di output |
|---|---|---|---|---|
| Approccio 1 — Trasposizione sul posto | range.transpose() |
Tutte le versioni di Excel | No (solo valori) | Stesso intervallo di ancoraggio, 5×4 |
| Approccio 2 — Formula matrice dinamica | cell.setDynamicArrayFormula |
Excel 365 / 2021+ | Sì (si espande dinamicamente) | Espanso dall’ancoraggio |
| Approccio 3 — Formula matrice classica (CSE) | cell.setArrayFormula |
Tutte le versioni di Excel | Sì (formula matrice multi-cella) | Dimensione esplicita, 4×5 |
| Utilizzare l'Approccio 1 quando si ha bisogno di una trasformazione rapida e compatibile tra le versioni e si desidera solo che i valori trasposti vengano scritti nel file. Utilizzare l'Approccio 2 quando è garantito l’utilizzo di Excel moderno e si desidera che la formula rimanga attiva e si aggiorni se l’origine cambia. Utilizzare l'Approccio 3 quando si ha bisogno della massima compatibilità con una formula conservata attraverso ogni versione di Excel, comprese le versioni più vecchie che non supportano le matrici dinamiche. |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.