Как выбрать все ячейки на листе в Excel. Изменить объект С#?

Я пытаюсь выбрать все ячейки в листе Excel в объекте Excel.Range объекта С# для применения автоматической подгонки, границы и т.д. У меня есть некоторые объединенные ячейки в листах.

Есть ли какой-нибудь простой трюк?

Ответы

Ответ 1

Взято из здесь, это выберет все ячейки на листе:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

Ответ 2

public void refreshSheetColumsSize(Worksheet ws)
 {
    ws.get_Range("a1").EntireRow.EntireColumn.Select();         
 }

Ответ 3

Excel.Range theRange = (Excel.Range)CurrentSheet.UsedRange;

В этом примере CurrentSheet - это переменная, в которой вы сохранили текущий лист, который вы используете.

Ответ 4

Я не делал каких-либо предварительных разработок какое-то время (Excel 2003), но я всегда обнаружил, что запись макроса при выполнении задач, которые я хотел реализовать в коде, имеют достаточные указатели, чтобы помочь.

В этом случае выбор всех ячеек и автозаполнение дает код:

Sub Macro1()
    Cells.Select
    Cells.EntireColumn.AutoFit
End Sub

который я бы предположил, грубо переводил бы на:

((Microsoft.Office.Interop.Excel.Range)_sheet.Cells.Select()).AutoFit();

где _sheet - это экземпляр используемого вами листка. (Непроверенные)

Ответ 5

Официально, Excel.Worksheet.UsedRange.Rows и Excel.Worksheet.UsedRange.Columns.

На практике это багги, вы должны вычесть стартовую строку и столбец. Самый близкий к правильному ответ:

   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

Это возвращает хотя бы все использованные ячейки, иногда немного больше. "Немного больше" может быть из-за пустых ячеек (а не пустых) и других случайных вещей. Составьте исследование, которое я сделал, это лучшее, что можно сделать.

Если вы действительно хотите выбрать все, тогда

ExcelWorksheet.Activate()
ExcelWorksheet.Cells.Select()

Ответ 6

Многое более чистое и не зависит от количества строк/столбцов, которые были увеличены в Excel 2007:

Если ваш лист находится в переменной wsData:

wsData.Range(wsData.Cells(1, 1), wsData.Cells(wsData.Rows.Count, wsData.Columns.Count))

Ответ 7

Чтобы рассмотреть все ячейки рабочего листа, вы можете написать:

workSheet.Cells[workSheet.Rows.Count,workSheet.Columns.Count]

ИЛИ

 workSheet.get_Range("A1","IV65536")

Чтобы рассмотреть используемые ячейки рабочего листа, вы можете написать:

workSheet.Rows.SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues)

Где "рабочий лист" представляет лист, над которым вы работаете. Оба примера кода возвращают диапазон.

Надеюсь, что это поможет!

Ответ 8

Очень просто:

xlWorkSheet.UsedRange.Columns.Select()

Ответ 9

worksheet.Columns.AutoFit()

Где "рабочий лист" является переменной типа Worksheet

Ответ 10

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

После завершения заполнения ячейки.