c# 读EXCELL 表格问题(有空值)
我用C#读EXCELL 表格时遇到下面问题:
如果一列中有以下情况:
1,2,3,4
1,2
1
22
表格属性都是 “常规”
我用如下语句实现表格到数据集的转化:
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source= " + Path + "; " + "Extended Properties=Excel 8.0; ";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = " ";
OleDbDataAdapter myCommand = null;
strExcel = "select * from [sheet1$] ";
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(dataSet1, "[sheet1$] "); //动作测试表填入
//动作测试数据集:dataSet1中
但是读“1”和“22”所在的单元格的字符串时,得到该单元格的值是空的。不能取出其值。但是如果在“1”和“22 "前加” '“ 单引号。则不会出现这种问题
请高手指教。谢谢!!!!
------解决方案--------------------你直接读取DataSet的数据不就行了吗?至于有空的记录你可以用where筛选下..不明白你的意思.
------解决方案--------------------你所说的读是不是取你现在的dataSet1中的值 ?没试过,但我想也是要加上 " ' "这个的,因为一个DATATABLE中的一个COLUMU的类型是不会出现CHAR和NUMERIC吧。
------解决方案-------------------- 是因为读取时,dataset不能正确的分配列表的类型,在程序中不好写,可以在Excel里选择要传入的列,然后选择工具栏上的数据--> 分列,会有一个新窗口,几个下一步之后,会有一个转换类型的窗口,在里面选择转为文本,确定保存就可以了。
然后使用程序读取就可以读出来了
楼主记得多给些分啊
------解决方案--------------------将excel绑定到datagrid中,然后去判断哪个格子是空值就行拉。
------解决方案--------------------
连接字符串改为
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1; '
------解决方案--------------------直接读sheet表的 xl.usedRange.Rows.count 不行么?
------解决方案--------------------定义宏 将表格内容变成文本。
------解决方案--------------------livode是正解!
// "HDR=Yes; " indicates that the first row contains columnnames, not data
// "IMEX=1; " tells the driver to always read "intermixed " data columns as text