C# Excel超过255列如何读取

 我来答
一点设计演示
高粉答主

推荐于2018-05-10 · 职场/教育各类模板,衷于原创
一点设计演示
采纳数:874 获赞数:83616

向TA提问 私信TA
展开全部
原因分析:
   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
广州方讯科技
2014-11-27 · TA获得超过346个赞
知道小有建树答主
回答量:316
采纳率:100%
帮助的人:224万
展开全部
Excel 1997 和 Excel 2003 中,工作表的大小仅为 256 列 × 65,536 行

Excel 2010 和 Excel 2007 中,工作表的大小为 16,384 列 × 1,048,576 行
因此,首先确保你的excel文件为excel2007及以上版本的,否则要先转换。
追问

这样最多读取到255列,怎么破?

追答
你是用ADO.NET来读取的啊,这可能是这个组件自身有个局限。建议你用第三方的.NET excel组件来读取Excel数据,比如好用的NPIO、Aspose、MyXls等,其中NPIO、MyXls是免费开源的,Aspose有破解版的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式