ADF, ADF Desktop Integration (ADFdi), ADF Exceptions

ADF Desktop Integration Excel worksheet exception on upload operation: ArgumentException: invalid area string: N5:Q5,S5

Full exception stack:

ArgumentException: invalid area string: N5:Q5,S5
Source: adfdi-excel-om-api
Stack:
at oracle.adf.client.windows.excel.om.api.ExcelRangeAreas.ParseRangeAddress()
at oracle.adf.client.windows.excel.om.api.cache.ExcelRangeCache.get_RangeAreas()
at oracle.adf.client.windows.excel.om.api.ExcelRangeReader..ctor(ExcelRange range, Int32 maxRows)
at oracle.adf.client.windows.excel.runtime.uicomponent.table.DEGUploadHelper.InitDataRangeIterator()
at oracle.adf.client.windows.excel.runtime.uicomponent.table.TableOperationHelper.ProcessRows(Boolean abortOnFail)
at oracle.adf.client.windows.excel.runtime.uicomponent.table.TableOperationHelper.Run(RTColumn rtColumnFlaggedOrChanged, Int32 cRowsFlaggedOrChanged, Boolean abortOnFail)
at oracle.adf.client.windows.excel.runtime.uicomponent.table.DEGUploadHelper.Upload(Boolean haveOptions, Boolean abortOnFail, Boolean downloadAfterUpload)
at oracle.adf.client.windows.excel.runtime.uicomponent.RTDataEntryGrid.Invoke(RTComponentAction rtAction)
at oracle.adf.client.windows.excel.runtime.uicomponent.RTActionCollection.DoInvoke(RTColumnCollection parent)

This exception is thrown when data upload to server is requested. Range N5:Q5,S5 specifies cells that are being updated. In my case it happend only under following conditions:

  • In table component there were columns with decimal data
  • There were some read only columns and some editable. Their order was mixed (i.e. [editable] [editable] [readonly] [editable])
  • Client computer OS locale was different from server locale (client – Lithuanian, server – US)

After some time spent on investigating, I came up with following solutions/workarounds which forced things work:

  • Making client locale same as server’s. In my case I switched to US. Locale became important after decimal numbers appeared on the table. Number format in Lithuanian and US locale is different (decimal part is separated with comma or dot). When there is not available decimal numbers everything works fine. But locale unification solved problem.
  • Making monolithic editable range in the table. This means that there can not be any read only columns interfered between editable columns. In the picture wrong example:

Here is correct example:

After changing editable/readonly column order like in preceding picture, everything works fine.

So this is two solutions I came up, believe that there should be smarter one, but for now I have only those. If  You experienced some other aspects of this problem, please, post a comment!
This issue is relevant to ADF version 11.1.1.7

Latest update!
I experienced same error when trying to update records using different than English locale. Try to change  more then one row, but with at least one unchanged row between them (i.e. change 4’th and 6’th row, 5th stays unchanged). After trying to upload changed data, same error is displayed. We’ve registered SR at Oracle support and got bug confirmed. And they made backport fix for 11.1.1.7 version (in 12c it is fixed). Related document ID in My Oracle Support – 1590786.1.