ExcelシートのすべてのセルをC#のExcel.Range
オブジェクトで選択して、自動調整、境界線などを適用しようとしています。シート内にいくつかの結合セルがあります。
そうするための簡単なトリックはありますか?
here から取得すると、ワークシート内のすべてのセルが選択されます。
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;
この例では、CurrentSheetは、現在使用しているシートを格納した変数です。
正式には、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()
私はしばらくExcel開発をしていませんが(Excel 2003)、コードに実装したいタスクを実行しながらマクロを記録すると、役立つ十分なポインタがあることにいつも気づきました。
この場合、すべてのセルを選択して自動調整すると、コードが得られます。
Sub Macro1()
Cells.Select
Cells.EntireColumn.AutoFit
End Sub
これは大まかに次のように変換されると思います。
((Microsoft.Office.Interop.Excel.Range)_sheet.Cells.Select()).AutoFit();
ここで、_sheetは使用しているワークシートのインスタンスです。 (未試験)
非常にクリーンで、Excel 2007で増加した行/列の数に依存しません。
シートがwsDataと呼ばれる変数にある場合:
wsData.Range(wsData.Cells(1, 1), wsData.Cells(wsData.Rows.Count, wsData.Columns.Count))
ワークシートのすべてのセルを検討するには、次のように記述します。
workSheet.Cells[workSheet.Rows.Count,workSheet.Columns.Count]
OR
workSheet.get_Range("A1","IV65536")
ワークシートの使用済みセルを検討するには、次のように書くことができます。
workSheet.Rows.SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues)
「ワークシート」は、作業中のシートを表します。どちらのコードサンプルも範囲を返します。
それが役に立てば幸い!
worksheet.Columns.AutoFit()
「worksheet」はタイプの変数です Worksheet
非常に簡単:
xlWorkSheet.UsedRange.Columns.Select()
xlWorksheet.get_Range("a1").EntireRow.EntireColumn.AutoFit();
xlWorksheet.get_Range("a1").EntireColumn.EntireRow.AutoFit();
セル充填完了後。