我正在尝试使用此连接字符串将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个字符限制?
答案 0 :(得分:2)
虽然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个字符限制。除了截断字符串或将字符串分成多个单元格之外,没有简单的解决方案。