用C#将一个EXCEL导入到DATASET中,但是读出来的时候发现有些数据没有导入,不同的EXCEL情况也不一样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C#将一个EXCEL导入到DATASET中,但是读出来的时候发现有些数据没有导入,不同的EXCEL情况也不一样相关的知识,希望对你有一定的参考价值。

用C#将一个EXCEL导入到DATASET中,但是读出来的时候发现有些数据没有导入,不同的EXCEL情况也不一样,有的EXCEL是纯数字没有导入进去,有的是纯字符没有导入进去,该怎么办

参考技术A 1.如果你的项目Framework3.0一下,推荐使用Office COM组件;

2.如果你的项目Framework3.0以上,推荐使用OpenXml;

3.使用OleDB或第三方DLL也不失为有效的办法,但是都不太好控制,容易出现你上述的那种错误,前二种方法源自微软,所以处理excel数据文件比较靠谱;

根据以往的经验,Excel文件最好由开发人员提供,控制好Excel版本和内部模板,这样可以尽量减少不必要的麻烦。追问

我已经找到原因并解决了,给你也说一下吧

Excel驱动程序读取指定源中一定数量的行(默认情况下为 8 行)以推测每列的数据类型。如果推测出列可能包含混合数据类型(尤其是混合了文本数据的数值数据时),驱动程序将决定采用占多数的数据类型,并对包含其他类型数据的单元返回空值。(如果各种数据类型的数量相当,则采用数值类型。)

本回答被提问者采纳
参考技术B 现在网上有个插件 NPOI 这个导出 excel 功能很强大的可以满足你的需要。 参考技术C 最好为你将要导入的每一列做一个数据类型的转换。追问

怎么转换可以用代码实现吗,因为EXCEL是不可以修改的

C# 将excel导入到DataGridView上 (可以对数据进行操作)

先拜大神!!!
RT求例子——求注释,还没达到看到代码就能知道每步作用的境界。
提前感谢咋个。

参考技术A 需要把excel导入到dataset或者datatable中,然后转换成你要的值追问

具体滴。。。

本回答被提问者和网友采纳
参考技术B public static DataTable ImportExcelToDataSet(string filePath)
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;Imex=1'";

DataTable dt = new DataTable();
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [message$]", strConn);

try

oada.Fill(dt);

catch (Exception ex)

throw new Exception("该Excel文件的工作表的名字设置为 message,以便获取数据" + ex.Message);

return dt;


这个就是吧excel到如到datatable中 然后你指定DataGridView的数据源是这个即可
默认情况下这个会吧excel第一行作为datatable的column,追问

测试可行,不过还有有问题要问你,那个在DataGridView中修改的数据怎么保存到excel中。。。

参考技术C NPOI 里面很详细了 我还真做过这个。。。追问

亲,求程序

以上是关于用C#将一个EXCEL导入到DATASET中,但是读出来的时候发现有些数据没有导入,不同的EXCEL情况也不一样的主要内容,如果未能解决你的问题,请参考以下文章

C#用excel进行批量导入的时候,获取excel中的内容放在dataset中有个问题

C# 将excel导入到DataGridView上 (可以对数据进行操作)

Winform excel导入问题

C#程序,将数据从dataset导出到excel表格里的时间类型为啥显示成“#”号呢

求将dataset数据集导出到excel文件的方法(vs2005 c#)

想问下。C#中怎么把List集合转为DataSet。