Detectar hojas de cálculo vacías
Buscar celdas pobladas
Las hojas de cálculo pueden tener una o más celdas rellenadas con valores, donde un valor puede ser simple (texto, numérico, fecha/hora) o una fórmula o un valor basado en fórmula. En tal caso, es fácil detectar si una hoja de cálculo dada está vacía o no. Todo lo que tenemos que comprobar son las propiedades Cells.MaxDataRow o Cells.MaxDataColumn. Si las propiedades mencionadas devuelven cero o valores positivos, eso significa que una o más celdas han sido rellenadas, sin embargo, si alguna de estas propiedades devuelve -1, eso indica que ninguna de las celdas ha sido rellenada en la hoja de cálculo dada.
Comprobar celdas inicializadas vacías
Todas las celdas que tienen valores se inicializan automáticamente, sin embargo, existe la posibilidad de que una hoja de cálculo tenga celdas con solo formato aplicado. En un escenario así, las propiedades Cells.MaxDataRow o Cells.MaxDataColumn devolverán -1, indicando la ausencia de cualquier valor rellenado pero celdas inicializadas debido a que el formato de las celdas no puede ser detectado usando este enfoque. Para comprobar si una hoja de cálculo tiene celdas vacías inicializadas, se recomienda usar el método IEnumerator.MoveNext en el enumerador adquirido de la colección Cells. Si el método IEnumerator.MoveNext devuelve true, eso significa que hay una o más celdas inicializadas en la hoja de cálculo dada.
Comprobar formas
Es posible que una hoja de cálculo dada no tenga ninguna celda rellenada, sin embargo, podría contener formas y objetos como controles, gráficos, imágenes, etc. Si necesitamos comprobar si una hoja de cálculo contiene alguna forma, podemos hacerlo inspeccionando la propiedad ShapeCollection.Count. Cualquier valor positivo indica la presencia de forma(s) en la hoja de cálculo.
Ejemplo de Programación
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create an instance of Workbook and load an existing spreadsheet | |
var book = new Workbook(dataDir + "sample.xlsx"); | |
// Loop over all worksheets in the workbook | |
for (int i = 0; i < book.Worksheets.Count; i++) | |
{ | |
Worksheet sheet = book.Worksheets[i]; | |
// Check if worksheet has populated cells | |
if (sheet.Cells.MaxDataRow != -1) | |
{ | |
Console.WriteLine(sheet.Name + " is not empty because one or more cells are populated"); | |
} | |
// Check if worksheet has shapes | |
else if (sheet.Shapes.Count > 0) | |
{ | |
Console.WriteLine(sheet.Name + " is not empty because there are one or more shapes"); | |
} | |
// Check if worksheet has empty initialized cells | |
else | |
{ | |
Aspose.Cells.Range range = sheet.Cells.MaxDisplayRange; | |
var rangeIterator = range.GetEnumerator(); | |
if (rangeIterator.MoveNext()) | |
{ | |
Console.WriteLine(sheet.Name + " is not empty because one or more cells are initialized"); | |
} | |
} | |
} |