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

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######..我该怎么做?


翻阅古今
浏览 589回答 3
3回答

守着星空守着你

处理混合数据类型的方法有两种&Excel。方法1打开Excel电子表格,手动将列格式设置为所需的格式。在这种情况下,“文本”。方法2有一个“hack”,包括将“imex=1”附加到连接字符串中。就像这样:Provider=Microsoft.Jet.OLEDB.4.0;数据源=myfile.xls;ExtendedProperties=Excel8.0;IMEX=1这将尝试根据在注册表中设置Excel格式的方式来处理混合Excel格式。这可以由您在本地设置,但是对于服务器来说,这可能不是一个选项。
打开App,查看更多内容
随时随地看视频慕课网APP