将长数字标识符导入 Excel

将长数字标识符导入 Excel

我在数据库中有一些数据,这些数据使用的 ID 为 16 位数字。在某些情况下,我需要以可在 Excel 中操作的方式导出数据。

所以我将数据导出到文件中,然后将其导入到 Excel 中。

我尝试过几种文件格式,但还是不行。

我面临的问题是,当将一个文件读入 Excel 时,如果其中有一个单元格看起来像数字,那么 Excel 会将其视为数字。

问题是(据我所知)excel 中的所有数值都是双精度浮点数,精度小于 16 位。所以我的 ID 发生了变化:最后一位数字经常被改为 0。

到目前为止,我只能通过自己破坏 ID 来让 Excel 保持 ID 不变:在 ID 上添加字母或符号。然而,这意味着为了再次使用该值,它必须是“未破坏的”。

有没有办法创建一个文件,在其中指定 excel 必须将值视为文本而不更改该值?或者有没有办法让 excel 将值视为长整型(64 位整数)?

答案1

您可以将数字放在引号中,并在其前面添加等号,如下所示:(="001145"当然,这是在 CSV 中)

答案2

强制将看起来像数字的东西视为文本的标准方法是加上单引号,也就是撇号 () 位于其前面。

答案3

您可以强制 Excel 将其作为文本从 .csv 导入。创建 .csv 文件后,

  1. 选择Data > From Text
  2. 在文本导入向导步骤 1 中,选择Delimited
  3. 在文本导入向导第 2 步中,选择Comma
  4. 在文本导入向导步骤 3 中,选择您的长 ID 列并选择Text data format
  5. 然后完成。

Excel 从一开始就会将长 ID 列视为文本,而不是尝试将其转换为数字然后再转换回文本,从而导致数据丢失。

以下是从 .csv 导入并以三种不同方式格式化相同数据字符串的示例:

长整型

请注意,如果您尝试直接打开 .csv(Excel 很乐意为您执行此操作),那么您已经无法为列分配数据类型值 - Excel 会(错误地)为您完成此操作。

答案4

除了我归类为可信答案的内容之外,我还发现在 LibreOffice 中,我可以使用他们所谓的“Excel 2003 xml”格式导出工作表。这种格式是一种 XML,看起来很容易自己生成,并且对工作表中的单元格有以下定义:

<Cell>
  <Data ss:Type="String">12345678901234567890</Data>
</Cell>
<Cell>
  <Data ss:Type="Number">1.23456789012346E+019</Data>
</Cell>

当我简单地为这样的 xml 赋予 xlsx 扩展名时,我的 LibreOffice 就可以正确地打开它而没有任何问题。

相关内容