从EXCEL导入数据库数值型都被四舍五入了

发布网友

我来回答

5个回答

热心网友

多看看你写的程序吧!

这种问题我不想回答来着,百度里弄不成精彩回复。

--------------

给你做一个实验。

假如excel 使用的是标准xml 驻存。


基本上类似于如下结构


<H30_Value>4.011<H30_Value/>

<H30_Handle>Round(2)<H30_Handle/>

<H30_ViewValue>4.00<H30_ViewValu/>


也就是说,你获得的值不是视觉值就是,实际存储值。

你的程序并没有统一处理,一些API,getCellValue,和 Value 差距可是相当的大。


mysql 写的导入插件用的是实际存储值。


我建立一个表,三个列 A int B float C varchar


 然后我用甲骨文开发的插件提交一下数据:


一共三行 三种格式。 自己多看看 fx 的那个显示 是什么值



也就是说 造成这种视觉和实际的元凶是handle,你用最简单的模板试一下,我个人认为你的那个程序有问题的概率比excel格式出问题的概率大一些。

mysql 文本 如果是数字 也可运算,这是一个优点。也是一个缺点。

追问我数值型没有保留小数点,故输入值和显示值是一样的,我程序里没用Round函数,出现了最后两位四舍五入的这情况,应该没这么神奇吧

追答所以让你优先排查你的程序。 你也可以用mysql for excel这个插件 ,提交一下你的excel。
试一下就知道问题出在哪里了。

以前开发程序的时候倒是有这种情况,200862到数据库里就会变成200860 基本不可能,可能是你举的例子根本就是你的假设。

但是在长数据的时候会产生这样的情况。

比如56656565665656566666 在excel 中 常规 数字 都会变成 56656565665656560000

当时解决是采用 先设置文本,或采用 '56656565665656566666 加个上撇 存储。
是csv文件,不要用excel 打开,不然大数据都会被编零。

热心网友

这是单元格格式的问题,你在你输入的数据上按右键,选择单元格格式,选数值,保留几位小数,你自己选择,因为之前你选择的是零位,所以四舍五入了追问我保留小数点后几位也是这样,数据库内格式用什么好呢。。。

热心网友

数据库中 VARCHAR 类型是字符串类型。追问我就是在问为啥数值型存字符串就会出现后两位四舍五入的情况呢?~数据库内应该对应哪种格式才正确显示

热心网友

既然数据库上VARCHAR

excel对应列 应该设为文本型追问数字作为文本处理会存成6.93155E+12这样的

热心网友

我在批量处理数据库内容的时候,也遇到这种问题。我一般会直接导出CSV文件,让后用TXT进行内容替换。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com