从Excel导入的Datarow不返回任何值,如果数据中有“/”

我正在尝试使用C#从Excel工作表读取数据。 但在我阅读的一些专栏中,数据中有“/”。 例如:123456/987654。 我这种情况下,我只是获得空间。 像表单是这样的:

111111
222222
987654分之123456
333333

我得到这样的结果:
111111
222222

333333

你能不能让我知道问题/解决方法?

var fileName = string.Format("{0}\\ReleaseNoteValidation\\release notes.xlsx", Directory.GetCurrentDirectory()); string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 12.0;"; var adapter = new OleDbDataAdapter("SELECT * FROM [Latest fixes$]", connectionString); var ds = new DataSet(); adapter.Fill(ds, "releaseNote"); DataTable data = ds.Tables["releaseNote"]; Console.WriteLine(data.Rows.Count); foreach (DataRow row in data.Rows) { releaseNoteChangeList.Add(Convert.ToString(row["ChangeID"])); Console.WriteLine(Convert.ToString(row["ChangeID"])); } 

硬将所有的值格式化为Excel文档中的文本,看看会发生什么。 要做到这一点在数字和AlphaNumeric值旁边创build一个列,并创build一个像= A1&“”的公式。 复制并粘贴值,然后用您的新值replace原始列,然后删除刚刚创build的列。

我想Microsoft.ACE.OLEDB.12.0是基于它可以读取的第一行猜测列数据types。 它假定整个列应该是数字的。

因此,您不具有空白单元格,而是一个NULL值,因为您/不是数字字符。

你必须限制列的typesText莫名其妙手动。

我不一定对ACE很熟悉,但像Select Cstr(col) ...可能会工作。

@tafia,谢谢你的回复。 正如你所build议的,我通过改变连接string将所有数据改为文本。

  string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";