Кто-нибудь знает, есть ли токен, который я могу добавить в свой csv для определенного поля, чтобы Excel не пытался преобразовать его в дату?
Я пытаюсь записать файл .csv из своего приложения, и одно из значений выглядит достаточно похоже на дату, когда Excel автоматически преобразует его из текста в дату. Я попытался поместить все свои текстовые поля (включая поле, похожее на дату) в двойные кавычки, но это не имеет никакого эффекта.
Ответы:
Я обнаружил, что, поставив '=' перед двойными кавычками, вы достигнете желаемого. Это заставляет данные быть текстовыми.
например. = "2008-10-03", = "больше текста"
РЕДАКТИРОВАТЬ (согласно другим постам) : из-за ошибки в Excel 2007, отмеченной Джеффькинсом, следует использовать решение, предложенное Эндрю :
"=""2008-10-03"""
источник
"=""2008-10-03"""
. Обновил пост.Я знаю, что это старый вопрос, но проблема скоро исчезнет. CSV-файлы легко генерируются из большинства языков программирования, довольно маленькие, легко читаемые человеком с помощью простого текстового редактора и вездесущие.
Проблема заключается не только в датах в текстовых полях, но и в том, что числовое преобразовывается из текста в числа. Несколько примеров, где это проблематично:
который иногда может начинаться с одного или нескольких нулей (0), которые выбрасываются при преобразовании в числовое значение. Или значение содержит символы, которые можно спутать с математическими операторами (как в датах: /, -).
Два случая, о которых я могу подумать, что решение «prepending =», как упоминалось ранее, может быть не идеальным ,
Мой хак, чтобы обойти это
Если к значению предварительно / добавляется нецифровый и / или не датированный символ, значение будет распознано как текст и не будет преобразовано. Непечатный символ будет хорош, поскольку он не изменит отображаемое значение. Однако обычный старый пробел (\ s, ASCII 32) не работает для этого, так как он отсекается в Excel, а затем значение все равно преобразуется. Но есть различные другие печатные и непечатные символы, которые будут хорошо работать. Самый простой , однако это Append (добавить после) простой символ табуляции (\ т, ASCII 9).
Преимущества такого подхода:
Если есть причина, по которой вы не хотите использовать вкладку, найдите в таблице Unicode что-то еще подходящее.
Другой вариант
может быть для создания файлов XML, для которых определенный формат также принимается для импорта более новыми версиями MS Excel, и который позволяет намного больше параметров, подобных формату .XLS, но у меня нет опыта в этом.
Так что есть разные варианты. В зависимости от ваших требований / приложения одно может быть лучше другого.
прибавление
Нужно сказать, что более новые версии (Excel 2013+) MS Excel больше не открывают CSV в формате электронных таблиц - еще один ускоренный удар в рабочем процессе, делающий Excel менее полезным ... По крайней мере, существуют инструкции для его обхода. Смотрите, например, этот Stackoverflow: Как правильно отображать файлы .csv в Excel 2013? ,
источник
\t
к своему разделительному символу;
... черт возьми, MS Office, почему это заняло у меня больше 2 минут, чтобы понять?column_name
). Также сделал трюк. Спасибо!'
, так как она довольно хорошо понята и не слишком отвлекает ... но невидимая будет лучше.Отрабатывая решение Джарода и проблему, поднятую Джеффкинсом, вы можете изменить
в
источник
"
значения где-то между датой."806676","None","41","=""05-16-2011""","100.00","False"
вместо этого, и вы увидите, что при сохранении и перезагрузке теряется перенос текста.У меня была похожая проблема, и это обходной путь, который помог мне без необходимости редактировать содержимое файла CSV:
Если у вас есть возможность присвоить файлу имя, отличное от «.csv», вы можете назвать его с расширением «.txt», например «Myfile.txt» или «Myfile.csv.txt». Затем, когда вы откроете его в Excel (не перетаскивая, а используя File-> Open или список наиболее часто используемых файлов), Excel предоставит вам «Мастер импорта текста».
На первой странице мастера выберите «С разделителями» для типа файла.
На второй странице мастера выберите «,» в качестве разделителя, а также выберите классификатор текста, если вы заключили значения в кавычки
На третьей странице выберите каждый столбец отдельно и назначьте каждому тип «Текст» вместо «Общий», чтобы Excel не связывался с вашими данными.
Надеюсь, это поможет вам или кому-то с подобной проблемой!
источник
ПРЕДУПРЕЖДЕНИЕ. В Excel '07 (по крайней мере) есть (еще одна) ошибка: если в содержимом поля есть запятая, он неправильно анализирует = "field, contents", а помещает все после запятой в Следующее поле, независимо от кавычек.
Единственный обходной путь, который я нашел, это работает - исключить =, когда содержимое поля содержит запятую.
Это может означать, что есть некоторые поля, которые невозможно представить точно «правильно» в Excel, но сейчас я надеюсь, что никто не слишком удивлен.
источник
field, content
есть"
внутри. Например"=""field, co""ntent"""
""""
.1"2
, если вы решите использовать этот трюк (вместо того, чтобы просто оставить его как"1""2"
в файле - Excel уже обработал бы это как текст), тогда последняя правильная строка в CSV-файле с таргетингом на Excel заканчивается быть"=""1""""2"""
.При создании строки для записи в мой CSV-файл на C # мне пришлось отформатировать ее следующим образом:
источник
2018
Единственное правильное решение, которое сработало для меня (а также без изменения CSV ).
Excel 2010:
Excel office365: (версия клиента)
Примечание: Excel Office365 (веб-версия), так как я пишу это, вы не сможете это сделать.
источник
В Excel 2010 откройте новый лист. На ленте данных нажмите «Получить внешние данные из текста». Выберите файл CSV и нажмите «Открыть». Нажмите кнопку "Далее". Снимите флажок «Tab», поставьте галочку рядом с «Comma», затем нажмите «Next». Нажмите в любом месте первого столбца. Удерживая клавишу Shift, перетащите ползунок до тех пор, пока вы не нажмете последний столбец, затем отпустите клавишу Shift. Нажмите кнопку «Текст», затем нажмите «Готово».
Все столбцы будут импортированы как текст, как они были в файле CSV.
источник
Все еще проблема в выпуске Microsoft Office 2016, довольно тревожная для тех из нас, кто работает с именами генов, такими как MARC1, MARCH1, SEPT1 и т. Д. Решение, которое я нашел наиболее практичным после генерации файла .csv в R, затем он будет открыт / открыт для пользователей Excel:
НТН
источник
Вот простой метод, который мы используем при работе при создании файла csv, он немного изменяет значения, поэтому он не подходит для всех приложений:
Добавить пробел ко всем значениям в CSV
Это пространство будет удалено из чисел, таких как «1», «2.3» и «-2.9e4», но останется в датах, таких как «01/10/1993», и в логических значениях, таких как «TRUE», останавливая их преобразование в внутренние типы данных Excel.
Он также предотвращает защелкивание двойных кавычек при чтении, поэтому надежный способ создания текста в CSV-файле остается неизменным в Excel. ДАЖЕ, если какой-то текст наподобие «3.1415», заключает его в двойные кавычки И ставит перед пробелом всю строку, то есть (используя одинарные кавычки, чтобы показать, что вы вводите) '"3.1415"'. Тогда в Excel у вас всегда будет исходная строка, за исключением того, что она заключена в двойные кавычки и начинается с пробела, поэтому вам нужно учитывать их в любых формулах и т. Д.
источник
"\xA0"
вместо этого вы можете использовать неразрывный пробел - это сработает.(Предполагая Excel 2003 ...)
При использовании мастера преобразования текста в столбцы на шаге 3 можно указать тип данных для каждого из столбцов. Нажмите на столбец в окне предварительного просмотра и измените неправильный столбец с «Общие» на «Текст».
источник
Это единственный способ, которым я знаю, как сделать это, не путаясь внутри самого файла. Как и в случае с Excel, я узнал об этом, часами стуча головой по столу.
Измените расширение файла .csv на .txt; это остановит Excel от автоматического преобразования файла при его открытии. Вот как я это делаю: откройте Excel на пустой лист, закройте пустой лист, затем File => Open и выберите файл с расширением .txt. Это заставит Excel открыть «Мастер импорта текста», где он задаст вам вопросы о том, как вы хотите, чтобы он интерпретировал файл. Сначала вы выбираете разделитель (запятая, табуляция и т. Д.), Затем (вот важная часть) вы выбираете набор столбцов столбцов и выбираете форматирование. Если вы хотите именно то, что находится в файле, выберите «Текст», и Excel отобразит только то, что находится между разделителями.
источник
awk
- избегайте переформатирования значений , похожих на даты , где проблема скорее в Excel чемawk
, несмотря на название вопроса.(EXCEL 2007 и позже)
Как заставить Excel не «определять» форматы даты без редактирования исходного файла
Или:
Data > Get external data > From Text
и выберите свой CSV.
В любом случае вам будут предложены параметры импорта, просто выберите каждый столбец, содержащий даты, и скажите Excel, чтобы форматировать как «текст», а не «общий».
источник
То, что я сделал для этой же проблемы, было добавить следующее перед каждым значением CSV: "=" "" и одну двойную кавычку после каждого значения CSV, прежде чем открывать файл в Excel. Возьмите следующие значения, например:
Они должны быть изменены перед открытием в Excel, чтобы:
После этого каждое значение ячейки отображается в виде формулы в Excel и поэтому не будет отформатировано как число, дата и т. Д. Например, значение 012345 выглядит как:
источник
1234500198475E-8
; Таким образом, дальнейшие вычисления в Excel будут по-прежнему возможны.Ни одно из предложенных здесь решений не является хорошим решением. Это может работать для отдельных случаев, но только если вы контролируете окончательное отображение. Возьмите мой пример: моя работа составляет список продуктов, которые они продают в розницу. Это в формате CSV и содержит коды деталей, некоторые из них начинаются с нуля, установленных производителями (не под нашим контролем). Уберите начальные нули, и вы действительно сможете найти другой продукт. Розничные клиенты хотят получить список в формате CSV из-за внутренних программ обработки, которые также находятся вне нашего контроля и отличаются для каждого клиента, поэтому мы не можем изменить формат файлов CSV. Без префикса '=' и вкладок. Данные в сырых файлах CSV верны; когда клиенты открывают эти файлы в Excel, начинаются проблемы. И многие клиенты не очень разбираются в компьютерах. Они могут просто открыть и сохранить вложение электронной почты. Мы думаем о предоставлении данных в двух немного разных форматах: один как Excel Friendly (используя предложенные выше варианты, добавив TAB, другой как «master». Но это может быть желательным, так как некоторые клиенты не поймут, почему мы должны сделать это. Тем временем мы продолжаем объяснять, почему они иногда видят «неправильные» данные в своих электронных таблицах. Пока Microsoft не внесет надлежащие изменения, я не вижу надлежащего решения этого вопроса, пока никто не контролирует то, как конечные пользователи использовать файлы. Но это может быть желаемое за действительное, так как некоторые клиенты не поймут, почему мы должны это делать. Тем временем мы продолжаем объяснять, почему они иногда видят «неправильные» данные в своих таблицах. До тех пор, пока Microsoft не внесет надлежащие изменения, я не вижу правильного решения, пока кто-то не контролирует, как конечные пользователи используют файлы. Но это может быть желаемое за действительное, так как некоторые клиенты не поймут, почему мы должны это делать. Тем временем мы продолжаем объяснять, почему они иногда видят «неправильные» данные в своих таблицах. До тех пор, пока Microsoft не внесет надлежащие изменения, я не вижу правильного решения, пока кто-то не контролирует, как конечные пользователи используют файлы.
источник
"\xA0"
(без пробелов) к вашим данным.Я на этой неделе встретился с этим соглашением, которое, кажется, является отличным подходом, но я нигде не могу найти на него ссылку. Кто-нибудь знаком с этим? Можете ли вы привести источник для этого? Я не искал часы и часы, но я надеюсь, что кто-то признает этот подход.
Пример 1: = ("012345678905") отображается как 012345678905
Пример 2: = ("1954-12-12") отображается как 1954-12-12 , а не 12.12.1954 .
источник
Это не Excel. Windows распознает формулу, данные как дату и автокорректирует. Вы должны изменить настройки Windows.
«Панель управления» (-> «Переключиться на классический вид») -> «Региональные и языковые параметры» -> вкладка «Региональные параметры» -> «Настроить ...» -> вкладка «Числа» -> А затем изменить символы в соответствии с тем, что вы хотите.
http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html
Он будет работать на вашем компьютере, если эти настройки не будут изменены, например, на компьютере ваших клиентов, они будут видеть даты вместо данных.
источник
Привет у меня та же проблема,
Я пишу этот vbscipt для создания другого файла CSV. Новый CSV-файл будет содержать шрифт в каждом поле, поэтому Excel будет понимать его как текст.
Таким образом, вы создаете файл .vbs с кодом ниже (например, Modify_CSV.vbs), сохраняете и закрываете его. Перетащите исходный файл в файл VBScript. Он создаст новый файл с «SPACE_ADDED» для имени файла в том же месте.
источник
Без изменения вашего CSV-файла вы можете:
Excel будет правильно форматировать и отделять ваши ячейки CSV как отформатированный текст, игнорируя автоматические форматы даты.
Что-то вроде глупой работы, но это лучше, чем модифицировать данные CSV перед импортом. Энди Бэйрд и Ричард вроде как ускользнули от этого метода, но пропустили пару важных шагов.
источник
Я знаю, что это старая тема. Для тех, кто, как я, у которых все еще есть эта проблема при использовании Office 2013 через PowerSuff-объект com, можно использовать метод opentext . Проблема в том, что этот метод имеет много аргументов, которые иногда взаимоисключающие. Чтобы решить эту проблему, вы можете использовать метод invoke-namedparameter, представленный в этом посте . Примером будет
К сожалению, я только что обнаружил, что этот метод каким-то образом прерывает синтаксический анализ CSV, когда ячейки содержат разрывы строк. Это поддерживается csv, но реализация microsofts кажется ошибочной. Также он как-то не обнаружил специфических немецких символов. Придание ему правильной культуры не изменило этого поведения. Все файлы (csv и script) сохраняются в кодировке utf8. Сначала я написал следующий код для вставки CSV ячейка за ячейкой.
Но это очень медленно, поэтому я искал альтернативу. По-видимому, Excel позволяет устанавливать значения диапазона ячеек с матрицей. Поэтому я использовал алгоритм в этом блоге, чтобы преобразовать CSV в мульти-массив.
Вы можете использовать приведенный выше код, так как он должен конвертировать любые CSV-файлы в Excel. Просто измените путь к CSV и символу разделителя внизу.
источник
В моем случае «Sept8» в CSV-файле, созданном с использованием R, был преобразован в «8-Sept» в Excel 2013. Проблема была решена с помощью функции write.xlsx2 () в пакете xlsx для генерации выходного файла в формате xlsx , который может быть загружен в Excel без нежелательного преобразования. Итак, если вам дан файл csv, вы можете попробовать загрузить его в R и преобразовать его в xlsx, используя функцию write.xlsx2 ().
источник
Обходной путь с помощью Google Drive (или Numbers, если вы на Mac):
Кроме того, если вы находитесь на Mac для шага 3, вы можете открыть данные в Numbers.
источник
(EXCEL 2016 и позже, на самом деле я не пробовал в старых версиях)
источник
Хорошо, я нашел простой способ сделать это в Excel 2003 - 2007. Откройте пустую книгу xls. Затем перейдите в меню «Данные», импортируйте внешние данные. Выберите ваш CSV-файл. Пройдите через мастера, а затем в «формате данных столбца» выберите любой столбец, который необходимо принудительно «текст». Это приведет к тому, что весь столбец будет импортирован как текстовый формат, что помешает Excel попытаться обработать любые конкретные ячейки как дату.
источник
Эта проблема все еще присутствует в Mac Office 2011 и Office 2013, я не могу предотвратить это. Это кажется такой простой вещью.
В моем случае у меня были значения, такие как "1 - 2" и "7 - 12" в CSV, правильно заключенные в кавычки, это автоматически преобразует дату в Excel, если вы попытаетесь впоследствии преобразовать ее в простой текст, который вы получите числовое представление даты, например 43768. Кроме того, оно переформатирует большие числа, найденные в штрих-кодах и числах EAN, в числа 123E +, которые не могут быть преобразованы обратно.
Я обнаружил, что Google Диски Google Диска не конвертируют числа в даты. Штрих-коды содержат запятые каждые 3 символа, но они легко удаляются. Он очень хорошо справляется с CSV, особенно когда имеешь дело с CSV для MAC / Windows.
Может спасти кого-нибудь когда-нибудь.
источник
ПРОСТОЕ РЕШЕНИЕ Я только что понял это сегодня.
Как только вы закончите редактирование, вы всегда можете снова открыть его в Word, чтобы снова заменить дефисы на дефисы.
источник
Я делаю это для номеров кредитных карт, которые постоянно преобразуются в научную нотацию: в итоге я импортирую свой .csv в Google Sheets. Параметры импорта теперь позволяют отключить автоматическое форматирование числовых значений. Я установил для любых чувствительных столбцов обычный текст и загрузил как xlsx.
Это ужасный рабочий процесс, но по крайней мере мои ценности остались такими, какими они должны быть.
источник
Я сделал этот макрос VBA, который в основном форматирует диапазон вывода в виде текста перед вставкой чисел. Прекрасно работает для меня, когда я хочу вставить такие значения, как 8/11, 23/6, 1/3 и т. Д. Без Excel, интерпретируя их как даты.
Мне очень интересно знать, работает ли это и на других людей. Некоторое время я искал решение этой проблемы, но я не видел быстрого решения vba, в котором раньше не было вставки перед входным текстом. Этот код сохраняет данные в первоначальном виде.
источник
Если в начале поля поставить кавычку, она будет интерпретирована как текст.
Пример:
25/12/2008
становится'25/12/2008
Вы также можете выбрать тип поля при импорте.
источник
Альтернативный метод:
Преобразуйте формат столбца, который вы хотите изменить, в «Текст». Выберите все ячейки, которые вы хотите сохранить, скопируйте. Не отменяя выбор этих столбцов, нажмите «Редактировать> Специальная вставка> Как значения»
Сохранить как CSV. Обратите внимание, что это должно быть последним, что вы делаете с файлом, так как при повторном открытии он будет форматироваться как даты, поскольку форматы ячеек не могут быть сохранены в файлах CSV.
источник