当前位置:编程学习 > C#/ASP.NET >>

c# 将EXCEL文件读取到DataSet中时,如果Excel单元格中过长,程序会自动截取前面一段。

我要将Excel表格的内读到DataSet中,但是在Excel表格中有几个单元格的内容过长,程序会自动截取部分内容。但我要的是全部内容,如何解决啊! --------------------编程问答-------------------- 什么内容?贴出来测试下 --------------------编程问答--------------------
引用楼主 xiaoxiasian 的回复:
我要将Excel表格的内读到DataSet中,但是在Excel表格中有几个单元格的内容过长,程序会自动截取部分内容。但我要的是全部内容,如何解决啊!


<div align="center">转到:
                                                    <input name="page_num" type="text" size="3" value="<[$page_num]>" onKeyPress="if (window.event.keyCode==13){go_click();}" >
              页/<[$page_count]>页  <a href="#" onclick=go_click(); >GO</a></div>

上面一段文字,程序会自动截取到 <a href="#" ,后面的内容就没有了 --------------------编程问答-------------------- 有路过的没,帮我看下!! --------------------编程问答-------------------- 经测试,没有出现你说的问题
你的数据在Excel里面必须是在一行里面 --------------------编程问答--------------------
引用 4 楼 net_lover 的回复:
经测试,没有出现你说的问题
你的数据在Excel里面必须是在一行里面


但是我将Excel 表格读取到DataTable 中然排序后,转化成xml文件,xml文件中的内容就会减少。 --------------------编程问答--------------------
引用 4 楼 net_lover 的回复:
经测试,没有出现你说的问题
你的数据在Excel里面必须是在一行里面


还有数据的格式是不能换的,空格和换行都要保留,是不是DataSet 对单元格长度有限制?? --------------------编程问答-------------------- --------------------编程问答-------------------- 你写xml出的问题吧。xml写的时候要进行XmlEncode或者写进<![CDATA[]]>里面去 --------------------编程问答-------------------- 应该是读Excel时出的问题,应该读单元格的Value,而不是读他的Text,如果嫌判断类型麻烦,必须读Text的话,要先将单元格的列宽加大,改到可以显示单元格的全部文字为止. --------------------编程问答-------------------- 不是这个问题,我在用GridView显示数据的时候就有少字符这个问题了。 --------------------编程问答--------------------
引用 9 楼 jointan 的回复:
应该是读Excel时出的问题,应该读单元格的Value,而不是读他的Text,如果嫌判断类型麻烦,必须读Text的话,要先将单元格的列宽加大,改到可以显示单元格的全部文字为止.


我是用OLEDB 方式去读Excel 文件的 --------------------编程问答-------------------- 单步调试看dataset中
单元格格式
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
DataSet ds = new DataSet();
using(OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
string str = "select * from [sheet1$]";
OleDbDataAdapter da= new OleDbDataAdapter(str, conn);
da.Fill(ds);
conn.Close();
}
--------------------编程问答--------------------
引用 11 楼 xiaoxiasian 的回复:
引用 9 楼 jointan 的回复:

应该是读Excel时出的问题,应该读单元格的Value,而不是读他的Text,如果嫌判断类型麻烦,必须读Text的话,要先将单元格的列宽加大,改到可以显示单元格的全部文字为止.


我是用OLEDB 方式去读Excel 文件的


如果是强类型数据集的话,试试修改DataColumn的MaxLength的长度

普通的DataSet那试试把excel第一行(或第二行)数据改到最长(未必管用) --------------------编程问答-------------------- http://blog.csdn.net/chazikai24/archive/2010/07/27/5769318.aspx
请看我的帖子,是不是读到datagridview有些单元格出现没数据的情况?读取csv和读取excel一样,都会有这种问题 --------------------编程问答--------------------
引用 11 楼 xiaoxiasian 的回复:
引用 9 楼 jointan 的回复:

应该是读Excel时出的问题,应该读单元格的Value,而不是读他的Text,如果嫌判断类型麻烦,必须读Text的话,要先将单元格的列宽加大,改到可以显示单元格的全部文字为止.


我是用OLEDB 方式去读Excel 文件的


用OLEDB 方式去读Excel 文件的
也完全没问题 --------------------编程问答-------------------- 测试代码
http://dotnet.aspx.cc/c3.rar --------------------编程问答--------------------
引用 16 楼 net_lover 的回复:
测试代码
http://dotnet.aspx.cc/c3.rar


读单行是没问题,如果在前面多插入10行以上的数据,就会出现我说的这种情况。
和14楼说的情况很相似。 --------------------编程问答--------------------
引用 17 楼 xiaoxiasian 的回复:
引用 16 楼 net_lover 的回复:

测试代码
http://dotnet.aspx.cc/c3.rar


读单行是没问题,如果在前面多插入10行以上的数据,就会出现我说的这种情况。
和14楼说的情况很相似。


手动处理数据,把数据的前8行,数据后面打一个空格进去。这样列就当成是文本型读取了不会出现丢失的情况
--------------------编程问答--------------------
引用 18 楼 chazikai24 的回复:
引用 17 楼 xiaoxiasian 的回复:

引用 16 楼 net_lover 的回复:

测试代码
http://dotnet.aspx.cc/c3.rar


读单行是没问题,如果在前面多插入10行以上的数据,就会出现我说的这种情况。
和14楼说的情况很相似。


手动处理数据,把数据的前8行,数据后面打一个空格进去。这样列就当成是文本型读取了不会出现丢失的情……

我有100多个Sheet,如果每个都手动加的话,工作量太大了。
我现在是直接用COM方式从Excel表格中读数据。
 Excel.Range range = sheet.get_Range(startCell, endCell);
 Array values = (System.Array)range.Formula;
但是如果单元格数据量巨大,程序还是会报错
Array values = (System.Array)range.Formula;
//这句会报错
{System.Object ForwardCallToInvokeMember(System.String, System.Reflection.BindingFlags, System.Object, Int32[], System.Runtime.Remoting.Proxies.MessageData ByRef)};

--------------------编程问答-------------------- 我复制100行都没有问题啊
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,