Ответ 1
Вероятно, ваша проблема имеет более легкое решение, но в крайнем случае попытайтесь сохранить файл Excel в виде текстового файла CSV, а затем обработайте его с помощью обычных файлов и классов манипуляции с строкой вместо механизма JET.
Мне нужно импортировать электронную таблицу Excel в мою программу и иметь следующий код:
string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;IMEX=1;HDR=NO;""", MyExcelFile.xls);
command.CommandText = "SELECT * FROM [Sheet1$]";
(Обратите внимание, что код выше не является реальным кодом, но должен видеть, что я делаю)
Я получаю файл импортированным, только проблема в том, что все столбцы в листе Excel, которые содержат более 255 символов, усекаются.
Есть ли способ обойти это?
Я где-то читал, что если вы убедитесь, что в столбце в первых 8 строках есть длинная строка текста, тогда это будет рассматриваться как поле memo и, следовательно, не усечено, но это, похоже, не работает.
Любые идеи?
Graeme
Вероятно, ваша проблема имеет более легкое решение, но в крайнем случае попытайтесь сохранить файл Excel в виде текстового файла CSV, а затем обработайте его с помощью обычных файлов и классов манипуляции с строкой вместо механизма JET.
Несколько раз набросился на это. В Fortunatly есть исправление реестра для исправления, описанное здесь в MSDN: http://support.microsoft.com/kb/189897
Эффективно, Excel только смотрит на первые восемь строк данных, чтобы определить, сколько столбцов должно быть. 255 по умолчанию, если длина составляет 255 символов или меньше. В статье MSDN, на которую я ссылался выше, объясняется, как добавить раздел реестра "TypeGuessRows
", который сообщает Excel, сколько строк сканировать для определения длины столбцов.
Поскольку я не мог найти точный ответ, который мне нужен, я собираюсь оставить это здесь, если это поможет кому угодно.
HKEY_LOCAL_MACHINE ► Software ► Wow6432Node ► Microsoft ► Office ► 12.0 ► Access Connectivity Engine ► Engines
TypeGuessRows = 0
Обычно лучше импортировать в существующую таблицу. Создание кода с помощью кода не так уж сложно.