获取Excel以显示完整值

时间:2012-10-02 17:14:41

标签: excel vba ssis format

我有一个Excel电子表格,其中包含一系列值,这些值是最多20个小数位的数字,使用来自here的技巧从另一个工作表中取消。

问题是单元格只显示10位数,所以,例如,即使值为5.46827166811115,它显示为5.468271668。

我已经尝试将格式设置为文本,但它仍然希望将其视为一个数字,小数位数会有所不同,所以我不能使用固定的#。###格式。我可以让它显示的唯一方法是将单元格格式化为文本,然后选择然后单击每个单元格的输入框!

然后会显示一个警告,单元格中的数字被格式化为文本或以撇号开头,但至少它显示的是完整值。

我确实找到了一个VBA脚本,只是做了一些非常简单的事情,比如cell.Value = cell.Value的选择似乎有效,但我再也找不到它了,我现在无法重现。

当然有更简单的方法吗?这并不重要,但是当我通过SSIS将这些数据导入VARCHAR(MAX)时,它会得到截断的值!

4 个答案:

答案 0 :(得分:1)

将单个撇号'预先挂起到数据中。在许多情况下,这比将单元格格式设置为文本更有效。

答案 1 :(得分:0)

您可以将单元格格式化为文本并执行.AutoFit,以便单元格展开以显示所有单元格内容,如下所示:

Columns("A:A").EntireColumn.AutoFit

将扩展A:A单元格,使其所有内容都可见。

答案 2 :(得分:0)

尝试使用#.000而不是#.###进行格式化,但如果您的问题是Excel正在降低您的精度,您可以尝试将该值乘以10 ^ 20,然后再除以10 ^ 20 SQL方面。

发现更多信息: here

看起来Excel仅限于15位精度,乘以10 ^ 20不会增加精度,因此您可以将其视为文本或将剩余数字拆分为另一列并将它们与SSIS或SQL组合回来。

答案 3 :(得分:0)

您是否已将IMEX = 1添加到连接字符串中?这使得SSIS不会试图找出前几行的数据。

另外,使用十进制数据类型而不是varchar(max)