使用OLEDB c#读取工作表名称中单引号的Excel文件时出现问题

时间:2019-12-23 04:22:57

标签: c# excel oledb

提供错误 无效字符

string sSheetName="Nov'16";
dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("Select * from [" + sSheetName+ "]", conn);
da.Fill(dt);
ds.Tables.Add(dt);

2 个答案:

答案 0 :(得分:1)

这可能对某人有所帮助。由于某种原因,我在阅读工作表名称时用单引号替换了两个单引号。我执行了以下操作,并修复了该问题:

                                            comm.CommandText = "Select * from [" + sheetName.Replace("''","'") + "]";

答案 1 :(得分:0)

您可以尝试使用其中一种现代库来代替旧的互操作程序,例如ExcelDataReader

using (var stream = File.Open("C:\\Temp\\test.xlsx", FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        while (reader.Read())
        {
            for (var i = 0; i < reader.FieldCount; i++)
            {
                var value = reader.GetValue(i)?.ToString() ?? string.Empty;
            }
        }
    }
}