@@ -179,19 +179,28 @@ private function getRowReference(Cell $cell): string
179
179
180
180
foreach ($ this ->columns as $ columnId => $ columnName ) {
181
181
$ columnName = str_replace ("\u{a0}" , ' ' , $ columnName );
182
+ $ reference = $ this ->adjustRowReference ($ columnName , $ reference , $ cell , $ columnId );
183
+ }
184
+
185
+ /** @var string $reference */
186
+ return $ this ->validateParsedReference (trim ($ reference , '[]@, ' ));
187
+ }
188
+
189
+ private function adjustRowReference (string $ columnName , string $ reference , Cell $ cell , string $ columnId ): string
190
+ {
191
+ if ($ columnName !== '' ) {
182
192
$ cellReference = $ columnId . $ cell ->getRow ();
183
193
$ pattern1 = '/\[ ' . preg_quote ($ columnName ) . '\]/miu ' ;
184
194
$ pattern2 = '/@ ' . preg_quote ($ columnName ) . '/miu ' ;
185
- /** @var string $reference */
186
195
if (preg_match ($ pattern1 , $ reference ) === 1 ) {
187
196
$ reference = preg_replace ($ pattern1 , $ cellReference , $ reference );
188
197
} elseif (preg_match ($ pattern2 , $ reference ) === 1 ) {
189
198
$ reference = preg_replace ($ pattern2 , $ cellReference , $ reference );
190
199
}
200
+ /** @var string $reference */
191
201
}
192
202
193
- /** @var string $reference */
194
- return $ this ->validateParsedReference (trim ($ reference , '[]@, ' ));
203
+ return $ reference ;
195
204
}
196
205
197
206
/**
@@ -226,7 +235,10 @@ private function validateParsedReference(string $reference): string
226
235
{
227
236
if (preg_match ('/^ ' . Calculation::CALCULATION_REGEXP_CELLREF . ': ' . Calculation::CALCULATION_REGEXP_CELLREF . '$/miu ' , $ reference ) !== 1 ) {
228
237
if (preg_match ('/^ ' . Calculation::CALCULATION_REGEXP_CELLREF . '$/miu ' , $ reference ) !== 1 ) {
229
- throw new Exception ("Invalid Structured Reference {$ this ->reference } {$ reference }" );
238
+ throw new Exception (
239
+ "Invalid Structured Reference {$ this ->reference } {$ reference }" ,
240
+ Exception::CALCULATION_ENGINE_PUSH_TO_STACK
241
+ );
230
242
}
231
243
}
232
244
0 commit comments