1

我有一个 Excel 电子表格,其中包含一系列值,这些值是小数点后 20 位的数字,使用此处的技巧从另一张表中取消透视。

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

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

然后它会显示一个警告,即单元格中的数字被格式化为文本或前面有一个撇号,但至少它显示了完整的值。

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

当然有更简单的方法来做到这一点?没关系,但是当我通过 SSIS 将这些数据导入 VARCHAR(MAX) 时,它会得到截断的值!

4

4 回答 4

1

在数据前附加一个撇号'。在许多情况下,这比将单元格格式设置为文本更有效。

于 2012-10-02T19:05:59.677 回答
0

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

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

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

于 2012-10-02T17:22:25.840 回答
0

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

找到更多信息: 这里

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

于 2012-10-02T18:14:37.017 回答
0

您是否已将 IMEX=1 添加到连接字符串中?这使 SSIS 无法尝试从前几行中找出数据。

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

于 2012-10-02T18:51:48.370 回答