I'm using the OpenXML SDK to parse .xlsx files. 

When I have very large numbers in the Excel file, i.e. `344230125015305000`, OpenXML converts it to the scientific version, i.e. `3.4423012501530502E+17`. This is strange, as the "full" value is present in the Excel file, meaning it hasn't been truncated and it should be available somewhere in the [Cell](http://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.cell(v=office.15).aspx) object.

![enter image description here](https://i.stack.imgur.com/7k7n9.png)

Any suggestions are most welcome.

UPDATE:

@AlexeiLevenkov suggested I look at the xml file, and it appears the values are stored in scientific form. Interestingly, Excel still shows the full form.

![enter image description here](https://i.stack.imgur.com/IMHPx.png)

Examples:

```
344110425109461000 -> 3.4411042510946099E+17
344230125015305000 -> 3.4423012501530502E+17
344770124807291000 -> 3.4477012480729101E+17
344770224905172000 -> 3.4477022490517197E+17

```

Attempting to covert back to full form, i.e. 

```
(long)Double.Parse("3.4411042510946099E+17", CultureInfo.InvariantCulture)

```

returns an incorrect value (`344110425109460992` for the above snippet).

Adding a single quote prefix to the value fixes the problem (another indicator, that the full form value is hidden in there somewhere), but it's not a solution for this scenario, as I'm try to build an automated processing of user-uploaded files.