从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;'";