Почему Excel отображает лидирующие нули при отображении данных CSV?


9

У меня есть текстовый файл CSV со следующим содержанием:

"Col1","Col2"
"01",A
"2",B
"10", C

Когда я открываю его в Excel, он отображается так, как показано здесь:

Обратите внимание, что ячейка A2пытается отобразить «01» как число без начального «0».

Когда я форматирую строки со 2 по 4 как «Текст», он меняет отображение на

... но все еще ведущий "0" ушел.

Есть ли способ открыть CSV-файл в Excel и увидеть все лидирующие нули в файле, щелкнув по какой-нибудь опции? Я не хочу повторять '01 'в каждой ячейке, которая должна иметь начальный ноль. Кроме того, использование ведущего апострофа требует сохранения изменений в формате XLS, когда требуется CSV. Моя цель состоит в том, чтобы просто использовать Excel для просмотра фактического содержимого файла в виде текста без Excel, пытаясь сделать мне какие-либо предпочтения форматирования.


Единственный способ, которым я понял это, труден, но, кажется, работает. Скопируйте и вставьте на новый лист. Установите всю вставляемую область в текстовый формат, затем удалите ее и снова вставьте значения. Боб твоя тетушка.

3
(Для наших не британских пользователей «Боб твоя тетя» - это идиома, которая свободно переводится как «и все готово».)
iglvzx

Роберт не был моей тетей. :-) Я думал, что раньше мне это удавалось, но это не сработало. Попробуй это. Что меня смутило, так это то, что форматирование ячейки как текста не приводит к тому, что значение «02» выводится с выравниванием слева в начале.
Чад

1
если CSV предназначен только для Excel, вы можете использовать явные числа в качестве текста - например, если вы пишете '01в Excel, он будет отображаться 01без одинарных кавычек ..
Aprillion

Ответы:


6

Когда вы откроете CSV, у вас будет возможность указать разделитель и тип данных для каждого столбца. Мастер импорта текста состоит из 3 шагов. Обратите внимание, что мои снимки экрана взяты из Excel 2010, но в Excel 2003 это будет работать точно так же.

Шаг 1: выберите разделитель (вместо фиксированной ширины)

Шаг 2: выберите запятую в качестве разделителя

Шаг 3: выберите каждый столбец и измените формат данных на «текст». (Вы увидите слово «Текст», отображаемое над каждым столбцом, как на снимке экрана ниже.)

введите описание изображения здесь

Ведущие нули больше не будут удалены:

введите описание изображения здесь

ОБНОВЛЕНИЕ : Если вы не хотите перемещаться по процессу, чтобы заставить Excel сотрудничать, вы можете использовать CSVEd , редактор, разработанный специально для редактирования текстовых файлов с разделителями. Хороший текстовый редактор, такой как Notepad ++, также может работать, но вы не сможете увидеть ваши данные в столбцах.



1
Моя проблема заключалась в том, что мой файл имел расширение csv и диалог импорта никогда не появлялся. когда я переименовал файл, чтобы иметь расширение текста, я был полностью настроен и знал, куда идти. ти.
Чад

Вот сложность: после импорта, как вы описываете, я хочу иметь возможность изменить файл и сохранить его как CSV. Он предоставляет мне запутанное уродливое диалоговое окно (давай, Майкрософт, создай для этого специальную диалоговую форму вместо использования функции MessageBox Windows!). Я выбираю вариант «сохранить его в том же формате». Когда я это делаю, по умолчанию используется формат с разделителями табуляции. Чтобы обеспечить сохранение txt-файла с разделителем запятых, необходимо изменить расширение имени файла обратно на «csv». Это уродливо чего? После 10 версий Excel у нас это есть?
Чад

Привет Велика, смотрите обновление внизу моего ответа. Возможно, вам лучше не использовать Excel вообще.
Джон Кроуэлл

Да, я уже искал редактор CSV. Я видел CSVEd. Мое первоначальное впечатление таково, что это выглядит как запутанный аметюришский интерфейс. Я думаю, что «Табличный текстовый редактор» выглядит лучше. Спасибо за вашу помощь.
Чад

13

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

"Col1","Col2"
="01",A
="2",B
="10", C

При открытии в Excel он сохранит 01.


Мой Excel 2010 не сохраняет 01 даже с вашим примером
OneWorld

1

отформатируйте столбец так, чтобы он отображался так, как вы хотите (например, 00 для 2 цифр).
Преимущество в том, что он будет сохранен с этими цифрами (но вам придется изменять форматирование каждый раз, когда вы редактируете CSV)


0

Сначала скопируйте все данные / столбцы и строки из фактического листа Excel в другой лист Excel, чтобы быть в безопасности, чтобы у вас были фактические данные для сравнения. шаги,

  1. Скопируйте все значения в столбце и вставьте их в блокнот.
  2. Теперь измените тип столбца на текст в листе Excel (он обрежет предшествующие / конечные нули), не беспокойтесь об этом.
  3. Перейдите в Блокнот и скопируйте все значения, которые вы вставили только сейчас.
  4. Перейдите на свой лист Excel и вставьте значения в том же столбце.

Если у вас есть более одного столбца с 0 значениями, просто повторите то же самое.

Счастливые дни.


0

1) Вставьте мои числа в столбец Excel (это удалит ведущие нули)

2) Затем щелкните правой кнопкой мыши, чтобы «отформатировать ячейки», настроенные на 0000 для 4-значного #, 00000 для 5-значного #. и т.д ... (вернуть эти нули)

3) Скопируйте столбец и вставьте его в текстовый файл. (должен иметь все ведущие нули).

4) Скопируйте ваш список .txt.

5) Щелкните правой кнопкой мыши любой столбец в Excel и отформатируйте его в текст.

6) Вставьте данные, скопированные из .txt, в столбец Excel. (Все ведущие нули остаются)

Раздели к своему сердцу желание.


0

Если повреждение уже выполнено и у вас есть данные в Excel, вы можете изменить формат файла, используя пользовательский параметр «Числовой формат». Просто введите нули для количества мест, которые вы хотите (ниже изображение будет делать шесть цифр)

введите описание изображения здесь

Вот макрос, который бы делал это на всем листе. Просто укажите количество цифр.

Sub whyNot()
Dim WS As Worksheet, fMat As String, p As Long

    '''''Custom Options
    Const NumberOfPlaces As Long = 3 '' change this to number of places you want
    Set WS = ActiveSheet 'or specify the sheet name with Sheets("Sheet1")


        For p = 1 To NumberOfPlaces
        fMat = fMat & "0"
        Next p

        WS.UsedRange.Cells.NumberFormat = fMat

End Sub
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.