Excel CSV - формат ячейки

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

Например, если файл CSV содержит

...,005,...

Затем Excel показывает это как 5. Есть ли способ переопределить это и отобразить 005?

Я бы предпочел сделать что-то для самого файла, чтобы пользователь мог просто дважды щелкнуть файл CSV, чтобы открыть его.

Я использую Excel 2003.

Ответ 1

Не существует простого способа управления форматированием Excel при открытии CSV файла. Однако ниже перечислены три подхода, которые могут помочь.

Мое предпочтение - это первый вариант.

Вариант 1 - Измените данные в файле

Вы можете изменить данные в CSV файле следующим образом: = "005" ,... Это будет отображаться в Excel как..., 005,...

Excel сохранит данные как формулу, но копирование столбца и использование специальных значений вставки избавятся от формулы, но сохраните форматирование

Вариант 2 - Отформатируйте данные

Если это просто проблема с форматом, и все ваши данные в этом столбце имеют длину в три цифры. Затем откройте данные в Excel и затем отформатируйте столбец, содержащий данные, с этим пользовательским форматом 000

Вариант 3. Измените расширение файла на .dif(формат обмена данными).

Измените расширение файла и используйте мастер импорта файлов для управления форматами. Файлы с расширением .dif автоматически открываются Excel при двойном щелчке.

Шаг за шагом:

  • Измените расширение файла с .csv на .dif
  • Дважды щелкните файл, чтобы открыть его в Excel.
  • Будет запущен "Мастер импорта файлов".
  • Установите "Тип файла" в "Разграниченный" и нажмите кнопку "Далее".
  • В разделе "Разделители" отметьте "Запятая" и нажмите кнопку "Далее".
  • Нажмите на каждый столбец отображаемых данных и выберите "Формат данных столбца". Столбец со значением "005" должен быть отформатирован как "Текст".
  • Нажмите кнопку завершения, файл откроется Excel с указанными вами форматами.

Ответ 2

Не используйте CSV, используйте SYLK.
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

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

Ответ 3

Это работает для Microsoft Office 2010, Excel версии 14

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

  • Откройте пустой (новый) файл (Файл → Новый из книги)
  • Откройте мастер импорта (данные → из текста)
  • Выберите ваш .csv файл и Import
  • В диалоговом окне выберите "Разграничено" и нажмите "Далее".
  • Выберите разделители (снимите отметку со всего, кроме "запятой" ), выберите свои классификаторы текста (вероятно {Нет}), нажмите "Далее"
  • В поле Предварительный просмотр данных выберите столбец, который вы хотите быть текстовым. Он должен подчеркнуть.
  • В поле Формат данных столбца выберите "Текст".
  • Нажмите "Готово".

Ответ 4

Вы можете просто форматировать свой диапазон как текст.

Также здесь - хорошая статья о числовых форматах и ​​о том, как вы можете их программировать.

Ответ 5

Фактически я обнаружил, что, по крайней мере, начиная с Office 2003, вы можете сохранить электронную таблицу Excel в виде XML файла. Таким образом, я могу создать XML файл, и когда я его дважды щелкнул, он будет открыт в Excel. Он обеспечивает тот же уровень контроля, что и SYLK, но синтаксис XML более интуитивный.

Ответ 6

Добавление неиспользуемого пространства в ячейке может помочь. Например: "firstvalue";"secondvalue";"005 ";"othervalue"

Это заставляет Excel обрабатывать его как текст, и пространство не видно. В Windows вы можете добавить неразрывное пространство, набрав alt + 0160. См. Здесь для получения дополнительной информации: http://en.wikipedia.org/wiki/Non-breaking_space

Пробовал в Excel 2010. Надеюсь, это поможет людям, которые все еще ищут вполне правильное решение этой проблемы.

Ответ 7

У меня возникла эта проблема при экспорте CSV-данных из кода С# и разрешена это путем добавления первых нулевых данных с символом табуляции \t, поэтому данные были интерпретированы как текстовые, а не числовые в Excel (но в отличие от предваряющих других символов, его не видно).

Мне понравился подход = "001", но это не позволило бы снова импортировать данные CSV в мое приложение С#, не удаляя все это форматирование из файла CSV импорта (вместо этого я просто обрезаю импорт данных).

Ответ 8

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

Ответ 9

Загрузите csv в oleDB и принудительно введите все выведенные типы данных в строку

Я задал тот же вопрос, а затем ответил на него кодом.

в основном, когда загружается файл csv, драйвер oledb делает допущения, вы можете сказать, какие предположения сделать.

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

Ответ 10

Я знаю, что это старый вопрос, но у меня есть решение, которое здесь не указано.

Когда вы создаете csv, добавьте пробел после запятой, но до вашего значения, например. , 005,.

Это помогло предотвратить автоматическое форматирование даты в Excel 2007.

Ответ 11

Метод импорта импорта текста НЕ работает, когда импортируемый CSV файл имеет разрывы строк внутри ячейки. Этот метод обрабатывает этот сценарий (по крайней мере, с данными с разделителями табуляции):

  • Создать новый файл Excel
  • Ctrl + A для выбора всех ячеек
  • В поле со списком номеров формата выберите текст
  • Открыть файл с разделителями табуляции в текстовом редакторе
  • Выбрать все, скопировать и вставить в Excel

Ответ 12

Это сводило меня с ума весь день (так как вы действительно не можете контролировать типы столбцов Excel до открытия файла CSV), и это сработало для меня, используя VB.NET и Excel Interop:

        'Convert .csv file to .txt file.
        FileName = ConvertToText(FileName)

        Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _
                                                        {2, xlTextFormat}, _
                                                        {3, xlGeneralFormat}, _
                                                        {4, xlGeneralFormat}, _
                                                        {5, xlGeneralFormat}, _
                                                        {6, xlGeneralFormat}}

        'We are using OpenText() in order to specify the column types.
        mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes)
        mxlWorkBook = mxlApp.ActiveWorkbook
        mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet)


Private Function ConvertToText(ByVal FileName As String) As String
    'Convert the .csv file to a .txt file.
    'If the file is a text file, we can specify the column types.
    'Otherwise, the Codes are first converted to numbers, which loses trailing zeros.

    Try
        Dim MyReader As New StreamReader(FileName)
        Dim NewFileName As String = FileName.Replace(".CSV", ".TXT")
        Dim MyWriter As New StreamWriter(NewFileName, False)
        Dim strLine As String

        Do While Not MyReader.EndOfStream
            strLine = MyReader.ReadLine
            MyWriter.WriteLine(strLine)
        Loop

        MyReader.Close()
        MyReader.Dispose()
        MyWriter.Close()
        MyWriter.Dispose()

        Return NewFileName
    Catch ex As Exception
        MsgBox(ex.Message)
        Return ""
    End Try

End Function

Ответ 13

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

Я попробовал с Excel 2007 и, похоже, работал.

Ответ 14

Ну, excel никогда не всплывает мастер для CSV файлов. Если вы переименуете его в .txt, вы увидите мастера, когда в следующий раз вы будете делать File > Open in Excel.

Ответ 15

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

...,`005,...

EDIT: Это неправильно. Апоптоп-трюк работает только при вводе данных непосредственно в Excel. Когда вы используете его в CSV файле, апостроф появляется в поле, которое вам не нужно.

http://support.microsoft.com/kb/214233

Ответ 16

Просто добавьте 'перед номером в документе CSV.