Coordinate
in package
セル座標操作のためのヘルパークラス
列のインデックスと行は、常に0ではなく1を基準にしています。これはExcelユーザーが慣れ親しんでいる挙動であり、
Excelの関数であるCOLUMN()
とROW()
とも同様です
Table of Contents
- A1_COORDINATE_REGEX = '/^(?<absolute_col>\\$?)(?<col_ref>[A-Z]{1,3})(?<absolute_row>\\$?)(?<row_ref>\\d{1,7})$/i'
- DEFAULT_RANGE = 'A1:A1'
- 範囲変数のデフォルト.
- absoluteCoordinate() : string
- 文字列の座標を絶対参照にします
- absoluteReference() : string
- 文字列の行、列、セル座標を絶対参照にします
- buildRange() : string
- 座標文字列の配列から範囲文字列を構築します.
- columnIndexFromString() : int
- 文字列から列インデックスを得ます
- coordinateFromString() : mixed
- 文字列から座標を得ます
- coordinateIsRange() : bool
- 引数のセルのアドレスがセルの範囲を表しているかどうかを確認します。
- extractAllCellReferencesInRange() : array<string|int, mixed>
- 範囲内のすべてのセル参照を抽出します。このセル参照は複数のセル範囲で構成できます。
- getRangeBoundaries() : array<string|int, mixed>
- 範囲文字列から範囲境界を計算します.
- indexesFromString() : array<string|int, mixed>
- 文字列の座標から対応するインデックスを得ます。
- mergeRangesInCollection() : array<string|int, mixed>
- 単一のセルの座標をキーとする連想配列を、セル範囲をキーとした連想配列に変換します。 同じ値を持つ隣接するセル座標のみが結合されます。 値がオブジェクトの場合、getHashCode()メソッドを持っている必要があります。
- rangeBoundaries() : array<string|int, mixed>
- 範囲文字列から範囲境界を計算します
- rangeDimension() : array<string|int, mixed>
- セル範囲の幅と高さを計算します。
- splitRange() : array<string|int, mixed>
- 範囲文字列を座標文字列に分割します
- stringFromColumnIndex() : string
- 列インデックスから文字列を得ます
- getCellBlocksFromRangeString() : array<string|int, array<string|int, mixed>>
- Get the individual cell blocks from a range string, removing any $ characters.
- getReferencesForCellBlock() : array<string|int, mixed>
- Get all cell references for an individual cell block.
- processRangeSetOperators() : array<string|int, mixed>
- sortCellReferenceArray() : array<string|int, mixed>
- validateRange() : void
- Check that the given range is valid, i.e. that the start column and row are not greater than the end column and row.
Constants
A1_COORDINATE_REGEX
public
mixed
A1_COORDINATE_REGEX
= '/^(?<absolute_col>\\$?)(?<col_ref>[A-Z]{1,3})(?<absolute_row>\\$?)(?<row_ref>\\d{1,7})$/i'
DEFAULT_RANGE
範囲変数のデフォルト.
public
string
DEFAULT_RANGE
= 'A1:A1'
Methods
absoluteCoordinate()
文字列の座標を絶対参照にします
public
static absoluteCoordinate(string $cellAddress) : string
Parameters
- $cellAddress : string
-
e.g. 'A1'
Return values
string —絶対参照の座標 e.g. '$A$1'
absoluteReference()
文字列の行、列、セル座標を絶対参照にします
public
static absoluteReference(string $cellAddress) : string
Parameters
- $cellAddress : string
-
e.g. 'A' or '1' or 'A1' この引数はセル参照だけでなく、行や列の参照も可能であることに注意してください
Return values
string —絶対座標 e.g. '$A' or '$1' or '$A$1'
buildRange()
座標文字列の配列から範囲文字列を構築します.
public
static buildRange(array<string|int, mixed> $range) : string
Parameters
- $range : array<string|int, mixed>
-
1つか2つの座標文字列を含む配列、を1つ以上含む配列 e.g. [['A1']] or [['A1','A2']] or [['A1','A2'],['C1','C2']]
Return values
string —範囲を表す文字列 e.g. 'A1' or 'A1:A2' or 'A1:A2,C1:C2'
columnIndexFromString()
文字列から列インデックスを得ます
public
static columnIndexFromString(string $columnAddress) : int
Parameters
- $columnAddress : string
-
eg 'A'
Return values
int —列インデックス (A = 1)
coordinateFromString()
文字列から座標を得ます
public
static coordinateFromString(string $cellAddress) : mixed
Parameters
- $cellAddress : string
-
eg: 'A1'
Return values
mixed —coordinateIsRange()
引数のセルのアドレスがセルの範囲を表しているかどうかを確認します。
public
static coordinateIsRange(string $cellAddress) : bool
Parameters
- $cellAddress : string
-
eg: 'A1' or 'A1:A2' or 'A1:A2,C1:C2'
Return values
bool —座標がセルの範囲を表しているかどうか。 eg: false or true or true
extractAllCellReferencesInRange()
範囲内のすべてのセル参照を抽出します。このセル参照は複数のセル範囲で構成できます。
public
static extractAllCellReferencesInRange(string $cellRange) : array<string|int, mixed>
Parameters
- $cellRange : string
-
Range: e.g. 'A1' or 'A1:C10' or 'A1:E10,A20:E25' or 'A1:E5 C3:G7' or 'A1:C1,A3:C3 B1:C3'
Return values
array<string|int, mixed> —単一のセル参照を含む配列 e.g. ['A1'] or ["A1","A2","A3",...,"A10","B1","B2",...,"B10","C1","C2",...,"C10"] or ["A1","A2","A3",...,"A10","A20","A21",...,"A25","B1",...,"B10","B20",...,"B25","C1",...,"D1",..."E1",...,"E10","E20",...,"E25"] or ["C3","C4","C5","D3","D4","D5","E3","E4","E5"] or ["A1","B1","B3","C1","C3"]
getRangeBoundaries()
範囲文字列から範囲境界を計算します.
public
static getRangeBoundaries(string $range) : array<string|int, mixed>
Parameters
- $range : string
-
セル範囲文字列 (e.g. A1:A1 or A1:A2)
Return values
array<string|int, mixed> —範囲座標 [開始セル, 終了セル] この、開始セルと終了セルは[列ID、行番号]です。 e.g. [["A", "1"],["A", "1"]] or [["A","1"],["A","2"]]
indexesFromString()
文字列の座標から対応するインデックスを得ます。
public
static indexesFromString(string $coordinates) : array<string|int, mixed>
Parameters
- $coordinates : string
-
eg: 'A1', '$B$12'
Return values
array<string|int, mixed> —mergeRangesInCollection()
単一のセルの座標をキーとする連想配列を、セル範囲をキーとした連想配列に変換します。 同じ値を持つ隣接するセル座標のみが結合されます。 値がオブジェクトの場合、getHashCode()メソッドを持っている必要があります。
public
static mergeRangesInCollection(array<string|int, mixed> $coordinateCollection) : array<string|int, mixed>
For example, このメソッドは:
[ 'A1' => 'x', 'A2' => 'x', 'A3' => 'x', 'A4' => 'y' ]
を:
[ 'A1:A3' => 'x', 'A4' => 'y' ]
に変換します。
Parameters
- $coordinateCollection : array<string|int, mixed>
-
座標をキーとする連想配列
Return values
array<string|int, mixed> —範囲をキーとする連想配列
rangeBoundaries()
範囲文字列から範囲境界を計算します
public
static rangeBoundaries(string $range) : array<string|int, mixed>
Parameters
- $range : string
-
セル範囲文字列 (e.g. A1:A1 or A1:A2)
Return values
array<string|int, mixed> —範囲座標 [開始セル, 終了セル] この、開始セルと終了セルは[列番号、行番号]です。 e.g. [[1, "1"],[1, "1"]] or [[1,"1"],[1,"2"]]
rangeDimension()
セル範囲の幅と高さを計算します。
public
static rangeDimension(string $range) : array<string|int, mixed>
Parameters
- $range : string
-
セル範囲 (e.g. A1:A2)
Return values
array<string|int, mixed> —範囲の大きさ [幅, 高さ] (e.g. [1, 2])
splitRange()
範囲文字列を座標文字列に分割します
public
static splitRange(string $range) : array<string|int, mixed>
Parameters
- $range : string
-
e.g. 'B4:D9' or 'B4:D9,H2:O11' or 'B4'
Return values
array<string|int, mixed> —返り値の配列には、1つか2つの座標文字列を含む配列、が1つ以上含まれます e.g. ['B4','D9'] or [['B4','D9'], ['H2','O11']] or ['B4']
stringFromColumnIndex()
列インデックスから文字列を得ます
public
static stringFromColumnIndex(int $columnIndex) : string
Parameters
- $columnIndex : int
-
列インデックス e.g. 1 or 2
Return values
string —e.g. 'A' or 'B'
getCellBlocksFromRangeString()
Get the individual cell blocks from a range string, removing any $ characters.
private
static getCellBlocksFromRangeString(string $rangeString) : array<string|int, array<string|int, mixed>>
then splitting by operators and returning an array with ranges and operators.
Parameters
- $rangeString : string
Return values
array<string|int, array<string|int, mixed>> —getReferencesForCellBlock()
Get all cell references for an individual cell block.
private
static getReferencesForCellBlock(string $cellBlock) : array<string|int, mixed>
Parameters
- $cellBlock : string
-
A cell range e.g. A4:B5
Return values
array<string|int, mixed> —All individual cells in that range
processRangeSetOperators()
private
static processRangeSetOperators(array<string|int, mixed> $operators, array<string|int, mixed> $cells) : array<string|int, mixed>
Parameters
- $operators : array<string|int, mixed>
- $cells : array<string|int, mixed>
Return values
array<string|int, mixed> —sortCellReferenceArray()
private
static sortCellReferenceArray(array<string|int, mixed> $cellList) : array<string|int, mixed>
Parameters
- $cellList : array<string|int, mixed>
Return values
array<string|int, mixed> —validateRange()
Check that the given range is valid, i.e. that the start column and row are not greater than the end column and row.
private
static validateRange(string $cellBlock, int $startColumnIndex, int $endColumnIndex, int $currentRow, int $endRow) : void
Parameters
- $cellBlock : string
-
The original range, for displaying a meaningful error message
- $startColumnIndex : int
- $endColumnIndex : int
- $currentRow : int
- $endRow : int