Как предотвратить удаление начальных нулей при импорте документа Excel с использованием c#

StackOverflow https://stackoverflow.com/questions/22879

  •  09-06-2019
  •  | 
  •  

Вопрос

Я могу подключиться к файлу 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 - отличный способ справиться с ведущей нулевой проблемой

Добавьте " " перед вашей строкой.Это заставит строку отображаться на новой вкладке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top