C# Excel超过255列如何读取
2个回答
展开全部
原因分析:
ADO和SSIS的Excel源对数剧列的长度的判定存在问题。
解决方案一:
把EXCEL转换成CSV格式,然后使用平面文件源导入数据库。
需要注意两点:
1、输出列长度需要手动修改。
2、注意不同语言造成的Unicode字符转换问题,必要时先切换系统语言,再作转换。
解决方案二:
将注册表中
Jet引擎.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
如果是:ACE引擎.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel
下的TypeGuessRows 项的值设置为0
Windows server 2003 系统注册表中,JET项位于HKEY_LOCAL_MACHINE\SOFTWARE\MicrosoftWow64Node\下
原因是驱动默认情况下根据列的前8行数据判定列长度,修改为0后需要检查整列数据来判定列长度,超过255个字符默认为ntext格式,少于255个字符则默认为nvarchar(255)。
添加一个数据流.在数据流里.添加一个OLEDB源.
新建一个excel的oledb源.在这里就不说了.
只需要将Provider设置为Microsoft Ace Oledb.然后选择Excel文件.
然后设置Extended Properties属性为Excel 12.0;HDR=YES
解决方案三:
使用函数将长度超过255个字符的列切割为多个少于255的列,导入数据库后在进行合并。
注意Excel的选择性粘贴功能。
可用函数:Left ,Mid
ADO和SSIS的Excel源对数剧列的长度的判定存在问题。
解决方案一:
把EXCEL转换成CSV格式,然后使用平面文件源导入数据库。
需要注意两点:
1、输出列长度需要手动修改。
2、注意不同语言造成的Unicode字符转换问题,必要时先切换系统语言,再作转换。
解决方案二:
将注册表中
Jet引擎.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
如果是:ACE引擎.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel
下的TypeGuessRows 项的值设置为0
Windows server 2003 系统注册表中,JET项位于HKEY_LOCAL_MACHINE\SOFTWARE\MicrosoftWow64Node\下
原因是驱动默认情况下根据列的前8行数据判定列长度,修改为0后需要检查整列数据来判定列长度,超过255个字符默认为ntext格式,少于255个字符则默认为nvarchar(255)。
添加一个数据流.在数据流里.添加一个OLEDB源.
新建一个excel的oledb源.在这里就不说了.
只需要将Provider设置为Microsoft Ace Oledb.然后选择Excel文件.
然后设置Extended Properties属性为Excel 12.0;HDR=YES
解决方案三:
使用函数将长度超过255个字符的列切割为多个少于255的列,导入数据库后在进行合并。
注意Excel的选择性粘贴功能。
可用函数:Left ,Mid
展开全部
Excel 1997 和 Excel 2003 中,工作表的大小仅为 256 列 × 65,536 行
Excel 2010 和 Excel 2007 中,工作表的大小为 16,384 列 × 1,048,576 行
因此,首先确保你的excel文件为excel2007及以上版本的,否则要先转换。
Excel 2010 和 Excel 2007 中,工作表的大小为 16,384 列 × 1,048,576 行
因此,首先确保你的excel文件为excel2007及以上版本的,否则要先转换。
追答
你是用ADO.NET来读取的啊,这可能是这个组件自身有个局限。建议你用第三方的.NET excel组件来读取Excel数据,比如好用的NPIO、Aspose、MyXls等,其中NPIO、MyXls是免费开源的,Aspose有破解版的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询