我在一个 csv 文件中导入了大量数据,大部分数据都没有问题,但其中一列的数据最多有 1000 个字符。不幸的是,Excel 认为这些数据超出了我的需要,因此似乎将其缩短了(255 个字符)。
我如何才能增加此限制并保留我的所有数据?
答案1
Excel 中有一个奇怪的错误。我将在这里解释如何避免(不是修复,只是避免)它,也许 MS Office 程序员很快就会修复它。也许它甚至在 Excel 2013 中已经修复,我还没有打开它。
所以,这就是问题所在。
文本单元格最大长度为32767,没问题。
数字单元的最大长度是255,就可以了。
但是如果您有一个单元格调用数字解析器,失败,然后调用文本解析器,这里就会变得一团糟。
例如:
...,"This is a cell with 30,000 characters........",...
将工作。
但如果你在开头加一个减号,就像
...,"-This is a cell with 30,000 characters........",...
您将只看到 255 个第一个文本字符,因为 EXCEL 认为它是一个负数。
希望能帮助到你。
答案2
我在处理一个 csv 文件时遇到了这个问题,该文件包含一些长文本字段,这些字段有时以破折号开头。由于有破折号,Excel 的导入似乎会尝试将该字段作为数字处理,而数字导入会将其缩减为 255 个字符。如果失败,它会将其作为文本导入,但只导入前 255 个字符。
为了避免这个问题,我不得不导入 csv,而不是直接打开它。在导入向导中,我选择了有问题的列,并将其类型从“常规”更改为“文本”。然后 Excel 甚至不会尝试将其解析为数字,我得到了完整的列宽。
答案3
首先,感谢大家帮助我们解决这个问题。事实证明,excel 可以很轻松地在一个单元格中容纳超过 255 个字符(假设您有足够的内存,则最多可以容纳 32,767 个字符,如前所述)。
那么为什么它不起作用呢?
简短的回答是,我不确定。我第一次将数据导入 excel 时,将其导出为 csv,然后在 excel 中打开。这样就缩短了列数(255)。(通过记事本查看时 csv 文件包含所有数据,但通过 excel 再次保存时则不包含)。
所讨论的列确实包含一些分号,但这与截止点(始终为 255)不对应,并且我没有使用 ; 作为分隔符。
我的解决方案是将其导出为 xls 文件。此后,它已成功保存为包含完整数据的 csv 文件。
希望这能对某些人有所帮助,尽管我仍然不确定这里的问题到底是什么。
答案4
一般来说,这是一个旧的限制,不再适用于现代版本的 Excel(至少是 2013 版)。但是,如果工作簿最初是在旧版本中创建的,则在旧版本中修改的单元格对象(即,从而使用特定属性和特性实例化)显然会保留 255 个字符的限制,即使在较新版本的 Excel 中打开也是如此!
修复:
- 使用现代版本的 Excel,以不同的方式,没用过工作表上的单元格,重新创建问题单元格所需的格式和/或合并范围条件。
- 确保它设置为常规或文本格式。
- 剪切或复制并粘贴新的、重新创建的单元格版本(或合并范围)并将其粘贴到旧的、错误的版本上。
- 现在,当在单元格中输入数据时,问题不再出现。
正如 WebweaverD 随后发布的那样,他找到了解决 csv 导入问题的方法。此外,如果单元格是通过 VBA 填充的,那么情况会变得更加复杂,正如其他回复所提到的。但如果数据是手动输入的,或者从另一个应用程序复制/粘贴到旧工作簿中,则问题可能是由这个旧单元格属性问题引起的。