Jet Engine - усечение 255 символов - PullRequest
8 голосов
/ 05 октября 2009

Мне нужно импортировать электронную таблицу 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 строках есть длинная строка текста, то он будет обрабатываться как памятное поле и поэтому не будет обрезан, но, похоже, это не сработало.

Есть идеи?

Graeme

Ответы [ 4 ]

6 голосов
/ 05 октября 2009

Несколько раз столкнулся с этим. К счастью, есть исправление реестра, описанное в MSDN здесь: http://support.microsoft.com/kb/189897

По сути, Excel просматривает только первые восемь строк данных, чтобы определить, какими должны быть столбцы. 255 является значением по умолчанию, если длина составляет 255 символов или меньше. В статье MSDN, на которую я ссылался выше, объясняется, как добавить раздел реестра "TypeGuessRows", который сообщает Excel, сколько строк сканировать, чтобы определить длину столбцов.

1 голос
/ 05 октября 2009

Возможно, у вашей проблемы есть более простое решение, но в крайнем случае попробуйте сохранить файл Excel в виде текстового файла CSV, а затем обработать его, используя обычные классы для работы с файлами и строками вместо механизма JET.

0 голосов
/ 28 апреля 2016

Поскольку я не смог найти точный ответ, который мне был нужен, я оставлю это здесь на случай, если он кому-нибудь поможет

HKEY_LOCAL_MACHINE ► Software ► Wow6432Node ► Microsoft ► Office ► 12.0 ► Access Connectivity Engine ► Engines

TypeGuessRows = 0

Источник

0 голосов
/ 05 октября 2009

Обычно лучше импортировать в существующую таблицу. Создать подходящую таблицу с помощью кода не так уж и сложно.

...