J'essaie de sélectionner toutes les cellules d'une feuille Excel dans l'objet Excel.Range
de C # pour appliquer l'ajustement automatique, la bordure, etc. J'ai des cellules fusionnées dans les feuilles.
Yat-il un truc simple pour le faire?
Tiré de ici , cela sélectionnera toutes les cellules de la feuille de calcul:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
public void refreshSheetColumsSize(Worksheet ws)
{
ws.get_Range("a1").EntireRow.EntireColumn.Select();
}
Excel.Range theRange = (Excel.Range)CurrentSheet.UsedRange;
Dans cet exemple, CurrentSheet est la variable dans laquelle vous avez stocké la feuille que vous utilisez actuellement.
Je n'ai pas développé Excel depuis longtemps (Excel 2003), mais j'ai toujours constaté que l'enregistrement d'une macro lors de l'exécution des tâches que je souhaitais implémenter dans le code comportait suffisamment de pointeurs pour vous aider.
Dans ce cas, la sélection de toutes les cellules et l’ajustement automatique donnent le code:
Sub Macro1()
Cells.Select
Cells.EntireColumn.AutoFit
End Sub
que j'imaginerais se traduirait approximativement par:
((Microsoft.Office.Interop.Excel.Range)_sheet.Cells.Select()).AutoFit();
où _sheet est l'instance de la feuille de calcul que vous utilisez. (non testé)
Officiellement, Excel.Worksheet.UsedRange.Rows et Excel.Worksheet.UsedRange.Columns.
En pratique, c'est bogué, vous devez soustraire la ligne et la colonne de départ. La réponse la plus proche de la réponse correcte est:
Public ReadOnly Property LastColumn() As Integer
Get
Return ExcelWorksheet.UsedRange.Columns.Count + _
ExcelWorksheet.UsedRange.Column - 1
End Get
End Property
Public ReadOnly Property LastRow() As Integer
Get
Return ExcelWorksheet.UsedRange.Rows.Count + _
ExcelWorksheet.UsedRange.Row - 1
End Get
End Property
Ceci retourne au moins toutes les cellules utilisées, parfois un peu plus. Le «petit plus» peut être dû à des cellules vides (plutôt que vides) et à d'autres choses aléatoires. D'après les recherches que j'ai faites, c'est le meilleur que l'on puisse faire.
Si vous voulez vraiment sélectionner tout alors
ExcelWorksheet.Activate()
ExcelWorksheet.Cells.Select()
Beaucoup plus propre et ne dépend pas du nombre de lignes/colonnes augmenté dans Excel 2007:
Si votre feuille est dans une variable appelée wsData:
wsData.Range(wsData.Cells(1, 1), wsData.Cells(wsData.Rows.Count, wsData.Columns.Count))
worksheet.Columns.AutoFit()
Où "feuille de travail" est une variable de type Feuille de travail
Très simple:
xlWorkSheet.UsedRange.Columns.Select()
Pour considérer toutes les cellules d'une feuille de calcul, vous pouvez écrire comme suit:
workSheet.Cells[workSheet.Rows.Count,workSheet.Columns.Count]
OR
workSheet.get_Range("A1","IV65536")
Pour considérer les cellules utilisées d'une feuille de calcul, vous pouvez écrire:
workSheet.Rows.SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues)
Où "feuille de travail" représente la feuille sur laquelle vous travaillez. Les deux exemples de code retournent une plage.
J'espère que ça aide!
xlWorksheet.get_Range("a1").EntireRow.EntireColumn.AutoFit();
xlWorksheet.get_Range("a1").EntireColumn.EntireRow.AutoFit();
Une fois le remplissage de la cellule terminé.