Как предотвратить удаление начальных нулей при импорте документа Excel с использованием c#
Вопрос
Я могу подключиться к файлу Excel и прочитать его без проблем.Но при импорте данных, таких как почтовые индексы, которые содержат начальные нули, как вы можете помешать Excel угадать тип данных и в процессе удалить начальные нули?
Решение
Я полагаю, вам нужно установить опцию в вашей строке подключения, чтобы принудительно импортировать текст, а не автоматически определять его.
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=c:\path\to\myfile.xlsx;
Extended Properties=\"Excel 12.0 Xml;IMEX=1\";
Ваш пробег может варьироваться в зависимости от установленной вами версии.Расширенное свойство IMEX=1 указывает Excel обрабатывать смешанные данные как текст.
Другие советы
Префикс с '
Добавление к содержимому ячейки префикса ' заставляет Excel видеть его как текст, а не как число.'не будет отображаться в Excel.
Существует взлом реестра, который может заставить Excel читать больше, чем первые 8 строк, при чтении столбца для определения типа:
Изменение
HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows
Должно быть 0, чтобы прочитать все строки, или другое число, чтобы установить его равным этому количеству строк.
Не то чтобы это немного снизило производительность.
Я думаю, что способ сделать это - отформатировать исходный файл Excel таким образом, чтобы столбец был отформатирован как текст, а не как Общий.Выделите весь столбец целиком, щелкните правой кнопкой мыши и выберите пункт форматировать ячейки, затем выберите текст из списка параметров.
Я думаю, что это явно определило бы, что содержимое столбца является текстом и должно рассматриваться как таковое.
Дайте мне знать, если это сработает.
Сохранение файла в виде текстового файла с разделителями в виде табуляции также сработало хорошо.
---старый К сожалению, мы не можем полагаться на то, что столбцы документа Excel останутся в определенном формате, поскольку пользователи будут регулярно вставлять в него данные.Я не хочу, чтобы приложение вышло из строя, если мы полагаемся на определенный тип данных для столбца.
будет ли работать префикс с ', есть ли разумный способ сделать это программно, если данные уже существуют в документе Excel?
Отправляющее значение 00022556
как '=" 00022556"'
использование Sql server - отличный способ справиться с ведущей нулевой проблемой
Добавьте " " перед вашей строкой.Это заставит строку отображаться на новой вкладке.