web-dev-qa-db-fra.com

Comment sélectionner toutes les cellules d'une feuille de calcul dans l'objet Excel.Range de c #?

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?

14
Chethan

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
11
SwDevMan81
public void refreshSheetColumsSize(Worksheet ws)
 {
    ws.get_Range("a1").EntireRow.EntireColumn.Select();         
 }
10
jocelyn
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.

8
ThunderGr

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é)

2
Dave

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()
2
smirkingman

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))
1
Chris
worksheet.Columns.AutoFit()

Où "feuille de travail" est une variable de type Feuille de travail

0
pmartin

Très simple:

xlWorkSheet.UsedRange.Columns.Select()
0
Lev Z

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!

0
NeverHopeless
        xlWorksheet.get_Range("a1").EntireRow.EntireColumn.AutoFit();
        xlWorksheet.get_Range("a1").EntireColumn.EntireRow.AutoFit();

Une fois le remplissage de la cellule terminé.

0
user6117410