это недопустимое имя. Убедитесь, что он не содержит недопустимых символов или знаков препинания и что он не слишком длинный.
когда я читал excel с помощью oledb, он успешно извлекал данные. Но когда имя листа содержит '#' , он не считывает данные.
Это дает следующую ошибку.
- это неподходящее имя. Убедитесь, что он не содержит недопустимых символов или знаков препинания и что он не слишком длинный.
[Правка - ОП-код от комментария]
Microsoft.Office.Interop.Excel.Application excelFileObject = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook workBookObject = null; workBookObject = excelFileObject.Workbooks.Open(File, 0, true, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); Microsoft.Office.Interop.Excel.Sheets sheets = workBookObject.Worksheets; Microsoft.Office.Interop.Excel.Worksheet sheet = null; String Con = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + File + ";Extended Properties="Excel 12.0;HDR=Yes;IMEX=2\""; OleDbConnection obj_Con = new OleDbConnection(Con); obj_Con.Open(); string sheet_Name = "ABCD#EFGH"; string query = String.Format("select * from [{0}$]", sheet_Name); OleDbCommand obj_CmdSelect = new OleDbCommand(query, obj_Con); OleDbDataAdapter obj_Adapter = new OleDbDataAdapter(); obj_Adapter.SelectCommand = obj_CmdSelect; DataSet obj_Dataset = new DataSet(); obj_Adapter.Fill(obj_Dataset, "Data"); /// Error occurs here
CHill60
Опубликуйте код, который вы используете для доступа к этому листу
karthikv101
Привет CHill60,
Спасибо за ваш ответ. Ниже приведен код
Microsoft.Офис.Взаимодействие.Превосходить.Приложение excelFileObject = новый Microsoft.Офис.Взаимодействие.Превосходить.Приложение();
Microsoft.Офис.Взаимодействие.Превосходить.Книги workBookObject = нуль;
workBookObject = excelFileObject.Рабочая тетрадь.Открыть(файл, 0, true, 5, "", "", false,
Microsoft.Офис.Взаимодействие.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Microsoft.Офис.Взаимодействие.Превосходить.Листы листы = workBookObject.Рабочий лист;
Microsoft.Офис.Взаимодействие.Превосходить.Рабочий лист sheet = null;
Строка Кон = "Поставщика=Майкрософт.Туз.Oledb для.12.0;Файл Источника Данных=" ++ "; Дополнительные Свойства="В Excel
12.0;HDR=да;IMEX=2\"";
OleDbConnection obj_Con = новый OleDbConnection(Con);
obj_Con.Открыть();
string sheet_Name = "ABCD#EFGH";
string query = строка.Формат("select * from [{0}$]", sheet_Name);
Объект oledbcommand obj_CmdSelect = новый объект oledbcommand(запрос, obj_Con);
OleDbDataAdapter obj_Adapter = новый OleDbDataAdapter();
obj_Adapter.Команды selectcommand = obj_CmdSelect;
DataSet obj_Dataset = новый набор данных();
obj_Adapter.Fill(obj_Dataset, "Data"); /// здесь возникает ошибка
karthikv101
Кроме того, ошибка заключается в том, что " ABCD.EFGH - это недопустимое имя. Убедитесь, что он не содержит недопустимых символов или знаков препинания и что он не слишком длинный.
Похоже, OLEDB преобразует символ "#" в символ".".