Excel 拒绝打开我通过编程创建的一些文件。我认为它出现故障是因为某个列的字符串太长(最多 1850 个字符),但为了排除故障,当我将字符串缩短(900 个字符)时,它便打开了。
问题 #1:单元格中可以容纳的最长字符串是多少?一些 Google 搜索结果显示为 1024 或 7,000 左右,但我发现 1000 太长了。
问题 #2:我尝试过以 XML 和 XLS 格式编写文件,但两者都存在相同的字符串长度问题。是否有一种 Excel 可以读取的格式,可以让我容纳 1850 长度的字符串?
答案1
根据这excel 2003 中每个单元格的限制为 1k 个字符,而在 excel 2007 中这个限制增加到了 32k 个字符。如果您的程序以编程方式创建 excel 2003 (.xls) 文件而不是 excel 2007 (.xlsx) 文件,那么这可能会导致问题,因为 .xls 格式不支持每个单元格超过 1k 个字符。
将 XML 或 XLS 格式直接输入 Excel 2007 不应该有问题,因为这不应该涉及 Excel 2003 的限制,但由于我没有 Excel 2007,因此我无法对其进行测试,但无论如何,希望这都是有帮助的。
答案2
即使 Excel 2003 也可以轻松处理单元格中的 32,767 个字符,但 Excel 2007 之前的版本仅显示前 1024 个字符细胞内(质谱源)。
您可能遇到了一个已知问题,即在 911 个字符处截断字符串。我以前在通过 ADO 连接传输数据时遇到过这种情况。
以下链接涉及 Excel 2003,但听起来确实与您遇到的问题相同。
答案3
答案4
在 Excel 2013 中(我假设在 Excel 2007 及更高版本中也是如此),单个单元格中显示的字符串长度为 1024 个字符。当我将 VBA 中创建的较长字符串写入单个 Excel 单元格时,我偶然发现了这一点,该单元格是包含数据的列中的最后一个单元格。右侧单元格中通常会显示长字符串,并在 1024 个字符后终止。但是,len 函数正确返回了字符串的实际大小,复制字符串(即电子邮件地址列表)并将其粘贴到 Outlook 中会得到正确的字符串。似乎 Excel 2007 及更高版本中提供的较长字符串可以正常工作,但无法完全显示。