Ограничение размера VARCHAR в таблицах Excel - PullRequest
2 голосов
/ 15 марта 2012

Я пытаюсь прочитать некоторые данные из базы данных SQL Server 2008 в электронную таблицу Excel 2007 с C #, используя следующую строку подключения:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=foo.xlsx;Extended Properties='Excel 12.0 XML;HDR=YES'

Один из столбцов в базе данных - это VARCHAR (1000).Когда я пытаюсь воссоздать схему в электронной таблице, создается впечатление, что Excel VARCHAR поддерживает только до 255. Эта страница предполагает, что «Общее количество символов, которое может содержать ячейка», составляет около 32 КБ, поэтому в принципе, должно быть возможно получить более длинную строку.

Есть ли простой способ обойти ограничение в 255 символов?

1 Ответ

2 голосов
/ 10 апреля 2012

Хотя XLOPER12 теперь будет поддерживать строку длиной до 32 767 символов Unicode, функция xlfEvaluate (и другие) excel C-Api по-прежнему ограничена 255 символами в Excel 2010. Она будет возвращать xltypeErr, если ей передается XLOPER12 с строка длиннее 255.

Все строки, которые пользователь видит в Excel, для многих версий теперь хранятся внутри как строки Юникода. Строки листа Unicode могут иметь длину до 32 767 (215 - 1) символов и могут содержать любые допустимые символы Unicode.

Когда впервые был представлен API C, строки рабочего листа представляли собой строки байтов, длина которых не превышала 255 символов, и API C отражал эти ограничения. В Excel 2007 обновлен API C для обработки длинных строк Unicode в Excel. Это означает, что функции DLL, зарегистрированные правильно, могут принимать аргументы Unicode и возвращать строки Unicode.

Примечание: Строки байтов по-прежнему полностью поддерживаются в C API для обратной совместимости, однако они имеют то же ограничение в 255 символов. Нет простого решения, кроме как обрезать строку или разделить строку на несколько ячеек.

...