【问题标题】:VARCHAR size limit in Excel spreadsheetsExcel 电子表格中的 VARCHAR 大小限制
【发布时间】:2012-03-14 22:48:13
【问题描述】:

我正在尝试使用以下连接字符串将 SQL Server 2008 数据库中的一些数据读取到带有 C# 的 Excel 2007 电子表格中:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=foo.xlsx;Extended Properties='Excel 12.0 XML;HDR=YES'

数据库中的一列是 VARCHAR(1000)。当我尝试在电子表格中重新创建架构时,似乎 Excel 的 VARCHAR 最多只支持 255。This page 建议“单元格可以包含的字符总数”大约是 32K,所以原则上应该是可能的获取更长的字符串。

有没有解决 255 字符限制的简单方法?

【问题讨论】:

  • 我没有对此的引用,所以我不会提供它作为答案,但我相信你不能。 255 个字符的限制也适用于 SSIS。我怀疑这是 Excel ODBC 驱动程序所固有的。我希望我是错的,这有时对我很有价值。

标签: sql-server-2008 excel-2007 connection-string


【解决方案1】:

虽然 XLOPER12 现在将支持最多 32,767 个 Unicode 字符长的字符串,但 xlfEvaluate(和其他)excel C-Api 函数在 Excel 2010 中仍被限制为 255 个字符长。如果它通过 XLOPER12 传递,它将返回 xltypeErr长度超过 255 的字符串。

用户在 Excel 中看到的所有字符串对于许多版本现在都在内部存储为 Unicode 字符串。 Unicode 工作表字符串的长度最长可达 32,767 (215 - 1) 个字符,并且可以包含任何有效的 Unicode 字符。

首次引入 C API 时,工作表字符串是长度限制为 255 个字符的字节字符串,而 C API 反映了这些限制。在 Excel 2007 中,更新了 C API 以处理 Excel 长 Unicode 字符串。这意味着以正确方式注册的 DLL 函数可以接受 Unicode 参数并返回 Unicode 字符串。

注意: 为了向后兼容,C API 仍然完全支持字节字符串,但是它们仍然具有相同的 255 个字符的限制。除了截断字符串或​​将字符串分成多个单元格之外,没有简单的解决方案。

【讨论】:

  • 虽然我很欣赏您为此付出的努力,但您的答案是迂回曲折的,其结论有点不清楚。你基本上是说没有办法绕过 255 个字符的限制吗?为了将来参考,我建议在第一句话中明确说明这一点,然后再提供更多细节来支持您的案例。
猜你喜欢
  • 2016-11-23
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多