Excel在CSV中的任何单元格中自动将值0503E000转换为5.03E + 02我试图将其转换为文本编号和常规,但是在我保存并再次重新打开后,它又回到了5.03E + 02
如何阻止这种情况的发生?
DEC2HEX
并HEX2DEC
为原始数字输入字符串(例如=DEC2HEX(HEX2DEC("0503E000"))
,您的示例)。如果您需要在不包含公式的情况下操作csv文件,则可能无济于事,但这是除格式化为文本外的另一种选择。
Excel在CSV中的任何单元格中自动将值0503E000转换为5.03E + 02我试图将其转换为文本编号和常规,但是在我保存并再次重新打开后,它又回到了5.03E + 02
如何阻止这种情况的发生?
DEC2HEX
并HEX2DEC
为原始数字输入字符串(例如=DEC2HEX(HEX2DEC("0503E000"))
,您的示例)。如果您需要在不包含公式的情况下操作csv文件,则可能无济于事,但这是除格式化为文本外的另一种选择。
Answers:
我认为这里的关键问题是您使用的是CSV,但其中没有嵌入单元格类型。Excel会自动尝试将单元格解释为具有科学编号,这就是为什么您看到的是5.03E + 02而不是0503E000的原因。
尝试创建Excel工作簿并将所有单元格格式化为文本,然后粘贴数据。我在Excel 2013中进行了尝试,并且有效。
如果可以转换或控制CSV格式,则可以通过将列用双引号引起来并在等号前加上强制,以使其在Excel中解析为文本。
Excel将以这种格式粗心地放弃精度:
Value,0503E000,1234123412341234
甚至这种格式:
Value,"0503E000","1234123412341234"
将其转换为:
Value | 5.03E+02 | 1234123412341230
但是,添加等号会强制Excel妥善保留数据:
Value,="0503E000",="1234123412341234"
…其开头为:
Value | 0503E000 | 1234123412341234
而不是在Excel 中打开 “ CSV文件”,而选择导入文件(在Excel 2007-2010中,您将导航到“数据功能区” /“获取外部数据” /“从文本”。不确定2013年,但应该有类似内容。)这样做之后,“文本导入”向导将打开,并为您提供机会将包含该“值”的列格式化为“文本”,然后再将Excel更改为数字值(不是很有用)。
this
,其余的将是清楚的。猜猜我要老了:
尝试通过MS excel中的DATA选项加载文件(从DB表中获取的数据),然后仅在加载时选择“数据类型检测”下的“不检测数据类型”,然后加载,这将保持数据格式不变并加载excel,无需任何列转换。
使用默认的单元格格式,Excel会自动修改前面带有零的数字和较长的数字。例如,如果您键入012,它将更改为12。
如果将单元格格式设置为Text,则您在单元格中键入的任何数字将保持不变,并且不会被Excel修改。
但是,如果将来自另一个来源的数字粘贴到格式为Text的单元格中,并且该来源中存在任何形式的格式,则该单元格的格式将从Text更改为General,然后数字操作将返回。
我发现的解决方案是进行特殊粘贴,并将数字粘贴为Text。然后,该单元格保持其文本格式,并且该数字根本不会被修改。