2016-04-18 16 views
1

Ich verwende EPPlus, um einen Excel-Bericht in ASP.Net zu generieren. Ich habe den folgenden Code verwendet:EPPlus rundet eine große Zahl auf

aCell.Value = CDec(aValue)

aCell ist vom Typ OfficeOpenXml.ExcelRange.

Dies funktioniert die meiste Zeit gut. Wenn jedoch aValue 201600000000515561 ist, wird die Zelle in Excel festgelegt mit dem Wert von 201600000000516000.

Stepping durch den Code und beobachten den Wert von aCell.Value zeigt, dass der richtige Wert eingestellt ist. Aber wenn das Excel geöffnet ist, wurde der Wert auf die nächsten 1000 aufgerundet.

Hat jemand eine Lösung oder ist das ein Fehler in EPPlus?

Antwort

1

Es ist kein Epplus Ding, eher eine Excel-Sache. Aufgrund der Art, wie Excel speichert Zahlen haben Sie bis zu 15 signifikante Zahlen, nach denen Excel im Grunde Nullen einfügt. Wenn Sie 201600000000515561 von links beginnend zählen, sehen Sie dies. Werfen Sie einen Blick auf diese:

https://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel

Ich denke, das populärste Arbeit um die Zahlen als Text zu speichern, wäre das natürlich seine eigenen Probleme führt. Hier ist ein guter Thread darauf:

http://answers.microsoft.com/en-us/office/forum/office_2007-excel/15-digit-number-limitation-non-text-workaround/a4974853-7c3c-4830-8562-2e88369d981b?auth=1

+0

Vielen Dank! Ich denke, wir müssen es als Text speichern. – navigator

Verwandte Themen