如何阻止Excel自动将数值0503E000转换为5.03E+02?
Excel在CSV中任何单元格中自动将数值0503E000转换为5.03E+02,我试着将其转换为文本数字和一般数值,但在我保存并重新打开后,它又回到了5.03E+02
我该如何阻止这种情况发生?
Excel在CSV中任何单元格中自动将数值0503E000转换为5.03E+02,我试着将其转换为文本数字和一般数值,但在我保存并重新打开后,它又回到了5.03E+02
我该如何阻止这种情况发生?
如果您可以转换或控制CSV格式,您可以通过用双引号包裹一列,并在前面加上等号,迫使它在Excel中解析为文本。
Excel会粗心地丢弃这种格式下的精度。
Value,0503E000,1234123412341234
甚至这种格式。
Value,"0503E000","1234123412341234"
转换为:
Value | 5.03E+02 | 1234123412341230
_然而,加上等号会迫使Excel勉强保存你的数据。
Value,="0503E000",="1234123412341234"
…打开后是:
Value | 0503E000 | 1234123412341234
我认为这里的关键问题是你使用的是CSV,它没有嵌入单元格类型。Excel会自动尝试将单元格解释为科学数字,这就是为什么你看到的是5.03E+02而不是0503E000。
尝试创建一个Excel工作簿,将所有单元格格式化为文本,然后粘贴数据。我在Excel 2013中试了一下,成功了。
与其在Excel中 “打开** ing "CSV文件,不如选择导入文件(在Excel 2007-2010中,你会导航到数据功能区/获取外部数据/从文本)。不确定2013年的情况,但应该有类似的东西。当您这样做时,文本导入向导将打开,并为您提供机会将包含该值的列格式化为文本,然后Excel(不是那么有用)将其改为数字值。
尝试通过MS excel中的DATA选项加载文件(从DB表中获取的数据),然后在加载时只需在 “数据类型检测 "下选择 "不检测数据类型",然后加载,这将保持数据的格式和加载excel,不需要任何列的转换。
在默认的单元格格式下,前面带0的数字和长数字会被Excel自动修改。例如,如果你输入012,它将被改为12。
如果您将单元格格式化为文本,那么您在单元格中输入的任何数字都将保持原样,不会被Excel修改。
然而,如果你将一个来自其他来源的数字粘贴到一个格式为Text的单元格中,并且在来源中存在任何形式的格式化,单元格的格式化将从Text变为General,并且数字操作将回来。
我找到的解决方法是进行特殊的粘贴,将数字粘贴为文本。然后单元格仍然保持其文本的格式,数字完全没有修改。