OLEDB读取excel无法处理数据以特殊字符撇号(')开始

以下代码读取Excel表并将所有数据复制到C# DataTable

 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; DataSet ds = null; strExcel = "select * from [" + Sheet1$+ "]"; myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); DataTable DT = ds.Tables[0]; 

当我查看DataTable DT中的DataTable DT ,我发现excel中以撇号开头的数据不能被读取(例如'0010,'0026,…等),即在DataTable DT变为空。

任何build议的解决scheme来解决它?

这是使用Excel vba的有趣的事情之一。

查看是否有撇号的唯一方法是使用此语法

 Dim s As String Cells(1, 2).Value = "'abc" s = Cells(1, 2).Formula s = Cells(1, 2).PrefixCharacter 

当你通过这个vba代码时,如果将prefixCharacter添加到输出中,它将只显示撇号。

所以我所知道的唯一的解决办法就是循环遍历所有的细胞。用一些愚蠢的东西代替撇号。 (html撇号),然后修复它在你的数据库..

如果你觉得自己被打了一巴掌,是的,VBA是时不时的。 这不是OLEDB问题,而是一个优秀的问题