我正在尝试使用C#将一些数据从SQL Server2008数据库读取到Excel2007电子表格中,使用以下连接字符串:
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个字符的限制?
发布于 2012-04-11 01:10:32
尽管XLOPER12现在支持最多32,767个Unicode字符的字符串,但xlfEvaluate (和其他) excel C-Api函数在Excel2010中仍然限制为255个字符。如果传递给它一个字符串长度大于255的XLOPER12,它将返回xltypeErr。
对于许多版本,用户在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个字符的限制。除了截断字符串或将字符串划分为多个单元格之外,没有其他简单的解决方案。
https://stackoverflow.com/questions/9711489
复制相似问题