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

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

например:

"141", "10/11/2002", "350.00", "1311742251"

Excel пытается "разумно" преобразовать все это в свои собственные форматы даты/чисел. Есть ли способ обойти это?


EDIT: разъяснил цель моего вопроса, извините за путаницу.

29
задан Simon East
12.12.2022 3:48 Количество просмотров материала 3157
Распечатать страницу

5 ответов

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

"=""Data Here"""

eg...

20,       5.5%,      "0404 123 351", "3-6",  "=""123"""
[number]  [percent]  [number]        [date]  [string]  <-- how Excel interprets

Он также работает в Google Spreadsheet, но не уверен, что другие приложения для электронных таблиц поддерживают эту нотацию.

Если вы подозреваете, что какие-либо данные могут содержать цитаты себя, вам нужно двойной побег их, как этот...

"=""She said """"Hello"""" to him"""





(EDIT: обновлено с исправлениями, спасибо DMA57361!)

51
отвечен Simon East 2022-12-13 11:36

Как и многие, я боролся с теми же решениями, которые принимает Microsoft, и пробовал различные предлагаемые решения.

для Excel 2007 следующее:

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

однако:

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

например:

"<tab character><some value>","<tab character><some other value>"

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

двойной щелчок файла csv может открыть файл в виде электронной таблицы в Excel, показывая все значения, которые рассматриваются как чуть выше, как текстовые данные. Убедитесь, что Excel использует '. как десятичная запятая, а не ',' или каждая строка файла csv будет в конечном итоге как один текст в первой ячейке каждой строки. Видимо Microsoft считает, что КШМ означает "нет запятой" запятыми.

27
отвечен ajabo 2022-12-13 13:53

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

вы можете найти его как DataGet External DataFrom Text в Excel 2007/2010.

Или DataImport External DataImport Data в Excel 2003.

вот изображение мастера импорта текста Excel 2003 в действии на приведенном примере данных, показывающее мне импорт последних двух столбцов как текст:

Excel 2003: Text Import Wizard on Step 3 - data types

19
отвечен DMA57361 2022-12-13 16:10

пример с Саймоном не сработал для меня, и я подозреваю, что это языковая разница. В C# строка рабочего формата выглядит так:

var linebreak = (i++ == list.Count) ? "" : "\r\n";

csv += String.Format("=\"{0}\",{1},{2},{3},=\"{4}\"{5}",
    item.Value, item.Status, item.NewStatus, item.Carrier, c.Status, linebreak);

и вот как выглядит выходной файл:

="abababababab",INVALID,INVALID,USPS,="",
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793000216184",UNKNOWNSTATUS,INVALID,USPS,=""

как видно, формат выходного файла ="VALUE", не "=""VALUE""", который, я считаю, может быть визуальным базовым соглашением.

Я использую Excel 2010. Кстати, Google Таблицы не будет открывать/конвертировать файл, отформатированный таким образом. Она сработает, если убрать знак равенства таким образом "VALUE", - Excel по-прежнему будет открывать файл, но игнорировать тот факт, что вы хотите, чтобы ваши столбцы были строками.

1
отвечен Shane 2022-12-13 18:27

простой способ заставить Excel интерпретировать дату как текст - это поставить перед датой одну кавычку, а не использовать полные кавычки, как в:

'10/11/2002

Если вы можете импортировать CSV вместо того, чтобы открывать его, вы можете сказать Excel, какой формат должен быть каждый столбец. Взгляните на этот вопрос я задал.

-2
отвечен hdhondt 2022-12-13 20:44

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

csv
formatting
microsoft-excel
string
text-formatting
Вверх