为了账号安全,请及时绑定邮箱和手机立即绑定

OleDB&混合Excel数据类型:缺失数据

OleDB&混合Excel数据类型:缺失数据

翻阅古今 2019-06-19 16:33:01
OleDB&混合Excel数据类型:缺失数据我有一个Excel工作表,我想把它读入DataTable-除了Excel工作表中的一个特定列外,一切都很好。列“productid”是类似于##########和n#########.我试着让OleDB自动处理所有事情。通过将其读入DataSet/DataTable,但是“Productid”中的任何值都类似n######都丢失了,被忽略了,并留下了空白。我尝试手动创建DataTable,方法是使用Dataareader循环遍历每一行,但结果完全相同。下面是代码:// add the column names manually to the datatable as column_1, column_2, ...for (colnum = 0; colnum < num_columns; colnum ++){   ds.Tables["products"].Columns.Add("column_" +colnum , System.Type.GetType("System.String")); }while(myDataReader.Read()){   // loop through each excel row adding a new respective datarow to my datatable    DataRow a_row = ds.Tables["products"].NewRow();   for (col = 0; col < num_columns; col ++){     try {  a_row[col] = rdr.GetString(col);  }     catch {  a_row[col] = rdr.GetValue(col).ToString(); }   }   ds.Tables["products"].Rows.Add(a_row);}我不明白为什么它不让我读像n######..我该怎么做?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

处理混合数据类型的方法有两种&Excel。

方法1

  • 打开Excel电子表格,手动将列格式设置为所需的格式。在这种情况下,“文本”。

方法2

  • 有一个“hack”,包括将“imex=1”附加到连接字符串中。就像这样:

    Provider=Microsoft.Jet.OLEDB.4.0;数据源=myfile.xls;ExtendedProperties=Excel8.0;IMEX=1

  • 这将尝试根据在注册表中设置Excel格式的方式来处理混合Excel格式。这可以由您在本地设置,但是对于服务器来说,这可能不是一个选项。


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信