我有一个中等大小的 CSV 文件(195,000 行)。出于某种原因,当我在 Excel 中打开它时尝试将一列数字格式化为货币时,它什么也没做。如果我编辑文件并在文件中保留较小的行子集(10-20 行),我就可以格式化该列。
这是 Excel 的已知问题吗?当然,我可以将其保存为实际的 Excel 电子表格文件,然后一切正常,但无论如何我都想知道发生了什么。
答案1
是的,这是 Excel 中已知的行为。
Excel 不允许您设置 CSV 导入,因此您无法以上述方式影响它。这就是问题存在的原因。如果您可以,它就永远不会出现问题。
我会描述这个问题,但我不知道如何做我提到的事。网上有,但我记得花了些时间才找到,现在我记不清了。对此我深表歉意。
问题是,当 Excel 导入 CSV 之类的文件时,它实际上只查看每列数据中的前 16 条记录,以决定导入时如何格式化该列。是的。16 条记录,即使预期负载为 195,000 行或一百万行。
对此有一些好的看法:在数据中,行通常具有合理的代表性,并且还考虑了对内存和读取整个数据集的速度的影响以及决定如何导入列。(我会自己承受这种打击,但是......)
但是,请考虑一下我一两个月前在这里遇到的一个例子,其中时间的格式是小时和分钟,或者可能是分钟和秒。因为数据很可能是按时间排序的,或者按其创建方法排序的,当然,一两分钟和几秒是起始记录。那里不起作用,是吗?
有一种方法,这就是需要研究的东西,即在决定如何格式化列之前,让 Excel 查看尽可能多的记录。这是该问题的程序内解决方案。
(如果 Excel 允许您像使用 TXT 文件那样强制格式化,它将有效地让您控制这方面,但是......您知道......Excel......)
其他解决方案在 Excel 之外。例如,在开头添加一些具有形式/材料的行以强制进行所需的格式设置。稍后删除它们。或者编辑以将一堆行从中间移动到开头。诸如此类。非常好,相对容易,但谁不喜欢程序内的解决方案呢,对吧?
Excel 包含多种导入方法,以及直接打开 CSV 文件。其中一种方法可能适合您的需求,而且它们似乎允许必要的控制。
顺便说一句,我偶然发现了这个问题,它研究了那些使用自己的数据并从中创建 Excel 电子表格(包括公式和格式)的程序似乎面临的问题。似乎有些人在一定程度上使用 Excel 本身,而不是自己编写所有程序。这是正确的,但他们却成为 Excel 缺点的牺牲品。我指的是功能,当然不是缺点……