Obtenir l’indice de la colonne maximale dans une ligne et l’indice de la ligne maximale dans une colonne avec C++
Scénarios d’utilisation possibles
Lorsque vous avez seulement besoin de manipuler certaines données sur les lignes ou colonnes, vous devez connaître la plage de données des lignes et colonnes. Aspose.Cells offre cette fonction. Pour obtenir l’indice de la colonne maximale d’une ligne, vous pouvez obtenir les propriétés Row.GetLastCell() et Row.GetLastDataCell(), puis utiliser la propriété Cell.GetColumn() pour obtenir l’indice de la colonne maximale et l’indice de la colonne contenant le plus de données. Mais pour obtenir l’indice de la ligne maximale et l’indice de la dernière ligne de données d’une colonne, vous devez créer une plage sur cette colonne, parcourir cette plage pour trouver la dernière cellule, puis obtenir l’attribut Cell.GetRow() de cette cellule.
Aspose.Cells fournit les propriétés et méthodes suivantes pour vous aider à atteindre vos objectifs.
Obtenir l’indice de colonne maximal dans la rangée et l’indice de rangée maximal dans la colonne en utilisant Aspose.Cells
Cet exemple montre comment :
- Charger le fichier d’exemple.
- Obtenir la ligne qui a besoin d’obtenir l’indice de colonne maximal et l’indice de colonne de données maximal.
- Obtenir l’attribut Cell.GetColumn() sur la cellule.
- Créez une plage basée sur la colonne.
- Obtenez l’itérateur et parcourez la plage.
- Obtenir l’attribut Cell.GetRow() sur la cellule.
#include <iostream>
#include <memory>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String filePath = srcDir + u"sample.xlsx";
Workbook workbook(filePath);
Worksheet sheet = workbook.GetWorksheets().Get(0);
Cells cells = sheet.GetCells();
Row row = cells.CheckRow(1);
if (row)
{
std::cout << "Max column index in row: " << row.GetLastCell().GetColumn() << std::endl;
std::cout << "Max data column index in row: " << row.GetLastDataCell().GetColumn() << std::endl;
}
Range columnRange = cells.CreateRange(1, 1, true);
auto colIter = columnRange.GetEnumerator();
int maxRow = 0;
int maxDataRow = 0;
while (colIter.MoveNext())
{
Cell currCell = colIter.GetCurrent();
if (!currCell.GetStringValue().IsEmpty())
{
maxDataRow = currCell.GetRow();
}
if (!currCell.GetStringValue().IsEmpty() || currCell.GetHasCustomStyle())
{
maxRow = currCell.GetRow();
}
}
std::cout << "Max row index in Column: " << maxRow << std::endl;
std::cout << "Max data row index in Column: " << maxDataRow << std::endl;
Aspose::Cells::Cleanup();
return 0;
}