Re: Set up Constraint in Xlsx

2020-06-15 Thread Tomasz Melcer

On 21.05.2020 15:30, Marcin Wyrwalski wrote:

I would like to ask, if there is a possibility to set up constraint
to not allow user to write more than three decimall places in cell? I
preparing and sending file to user, and user is supposed to return
file with some data. I would like to set up constraints on required
field, to allow only good values. Has anybody have any ide it this
can be done?


As far as I understand, this is impossible. The XLSX file has no means 
to limit the precision of numbers entered by the user. It only has means 
to limit the precision of displaying them. Note that software (at least 
MS Excel and LibreOffice Calc from my observations) considers any 
numbers entered into cells as IEEE 754 double precision numbers (with 
all related artifacts like rounding big integers).


Any rounding that needs to happen in your case will have to be handled 
by your spreadsheet parsing code. If you absolutely need to make sure 
the user cannot enter numbers that can't be represented as a DECIMAL(?, 
?) type in your database, you should reconsider using the XLSX format as 
means for providing data by your user.



--
Tomasz Melcer

-
To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
For additional commands, e-mail: user-h...@poi.apache.org



Re: Set up Constraint in Xlsx

2020-05-22 Thread Andreas Reichel
Marcin,

On Thu, 2020-05-21 at 13:30 +, Marcin Wyrwalski wrote:
> Hello.
> 
>  I would like to ask, if there is a possibility to set up constraint to not 
> allow user to write more than three decimall places in cell? I preparing and 
> sending file to user, and user is supposed to return file with some data.

The closest thing I found look like that: 
https://exceljet.net/formula/data-validation-number-multiple-100
(Validity defined by a formula.)

You will likely compare ROUND(x, 2) vs ROUND(x/100) and test for Zero
or something like that.
Cheers
Andreas




Re: Set up Constraint in Xlsx

2020-05-22 Thread Andreas Reichel
Rob,

On Thu, 2020-05-21 at 19:39 -0600, Rob Sargent wrote:
> I guess I don't understand what is not "good" about extra digits after 
> 
> the decimal point?

Very simple, but frequent use case: Loading data from a Spreadsheet
file into a database.
In this case, the read value is a FLOAT which needs to be forced into
DECIMAL(?,?). And this can be a real nightmare, because most of the End
Users just copy/paste the content from other data sources into the
Spreadsheet without thinking about it.

Also, certain data, like currency amounts or interest rates permit only
a fixed number of digits.

Spreadsheets actually do lack a BigDecimal data type.

Cheers




Re: Set up Constraint in Xlsx

2020-05-21 Thread Rob Sargent
I guess I don't understand what is not "good" about extra digits after 
the decimal point?  You can round to whatever precision you choose. 
What if the user is using some tool to generate and insert the data and 
it divides 1 by 3 and gets 0.33.  You're going to make the user 
trim that manually to 0.333.  That would not make me happy.


On 5/21/20 7:30 AM, Marcin Wyrwalski wrote:

Hello.

  I would like to ask, if there is a possibility to set up constraint to not 
allow user to write more than three decimall places in cell? I preparing and 
sending file to user, and user is supposed to return file with some data. I 
would like to set up constraints on required field, to allow only good values.
Has anybody have any ide it this can be done?

Have a Nice day
marcin Wyrwalski

-
To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
For additional commands, e-mail: user-h...@poi.apache.org



-
To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
For additional commands, e-mail: user-h...@poi.apache.org