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

Я могу подключиться и прочитать файл Excel без проблем. Но при импорте данных, таких как почтовые индексы с ведущими нулями, как вы мешаете Excel угадать тип данных и в процессе удаления начальных нулей?

22.08.2008 17:02:14
8 ОТВЕТОВ
РЕШЕНИЕ

Я полагаю, что вы должны установить параметр в строке подключения, чтобы принудительно импортировать текст, а не автоматически определять его.

Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source=c:\path\to\myfile.xlsx;
    Extended Properties=\"Excel 12.0 Xml;IMEX=1\";

Ваш пробег может варьироваться в зависимости от версии, которую вы установили. Расширенное свойство IMEX = 1 указывает Excel обрабатывать смешанные данные как текст.

6
22.08.2008 17:10:57

Префикс с '

1
22.08.2008 17:06:41

Префикс содержимого ячейки с 'заставляет Excel видеть его как текст вместо числа. 'Не будет отображаться в Excel.

1
22.08.2008 17:08:31

Я думаю, что способ сделать это состоит в том, чтобы отформатировать исходный файл Excel таким образом, чтобы столбец был отформатирован как текст вместо общего. Выберите весь столбец и щелкните правой кнопкой мыши и выберите формат ячеек, выберите текст из списка параметров.

Я думаю, что это явно определило бы, что содержимое столбца является текстом и должно рассматриваться как таковое.

Дай мне знать, если это работает.

0
22.08.2008 17:08:51

Сохранение файла в виде текстового файла с разделителями табуляции также работает хорошо.

--- old К сожалению, мы не можем полагаться на столбцы документа Excel, чтобы оставаться в определенном формате, поскольку пользователи будут регулярно вставлять в него данные. Я не хочу, чтобы приложение зависало, если мы полагаемся на определенный тип данных для столбца.

с префиксом «сработает», есть ли разумный способ сделать это программно, когда данные уже существуют в Excel DOC?

0
24.11.2009 19:43:01

Существует взлом реестра, который может заставить Excel читать больше первых 8 строк при чтении столбца, чтобы определить тип:

+ Изменить

HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 

Чтобы быть 0, чтобы прочитать все строки, или другое число, чтобы установить его на это количество строк.

Не то, чтобы это слегка повлияло на производительность.

1
24.03.2009 14:41:12

Отправка значения , 00022556как '=" 00022556"'с сервера Sql является отличным способом справиться с ведущим нулевой проблемой

0
26.12.2013 12:10:34

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

0
1.04.2015 14:35:40