Как вы заставляете Excel цитировать все столбцы файла CSV?

89

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

Михаил Шницер
источник

Ответы:

44

Если вы откроете файл XLS в LibreOffice или OpenOffice, затем «Сохранить как ...» и выберите «Текст CSV», это позволит создать файл CSV, который также содержит кавычки в качестве разделителей. Например: «Смит», «Пит», «Канада», «Джонс», «Мэри», «Англия»

Просто установите флажок «Цитировать все текстовые ячейки»: Экспорт в CSV с помощью LibreOffice

Чтобы также заключить в кавычки числовые поля, выделите диапазон ячеек и измените форматирование ячейки на «текст» перед сохранением.

Пит
источник
7
Хотя это и не ответ на конкретный вопрос, это более простой обходной путь, чем попытка заставить моих клиентов использовать макрос!
Duncanmoo
Я устал использовать этот метод каждый день, поэтому я здесь
vladkras
Я думаю, что это самое простое и удобное решение, поскольку OpenOffice - это портативное программное обеспечение. Вам не нужно ничего устанавливать или писать какие-либо коды.
Скотт Чу
лучший ответ когда-либо !!
Раджья Вардхан
20
Совсем не ответ. Вопрос явно о MS Excel
vladkras
43

На этой странице также есть решение, которое приходит прямо изо рта лошади:

http://support.microsoft.com/kb/291296/en-us

Если ссылка ухудшается, тема для поиска:

«Процедура экспорта текстового файла с разделителями-запятыми и кавычками в Excel» и / или «Q291296»

tl; dr: использовать их макрос

sahmeepee
источник
10
Стоит отметить, что макрос использует Integer для значений строк и столбцов. Вы получите сообщение об ошибке, если попытаетесь экспортировать более 32768 строк. Например, изменение типов данных на Long позволит решить эту проблему.
Дан
Хорошее место (+1). Похоже, что они не обновили код, так как он был впервые написан для версий Excel, содержащих максимум 32768 строк.
sahmeepee
9
Я взял на себя смелость создать с помощью этого макроса суть и несколько исправлений: gist.github.com/fabriceleal/7803969
fableal
@fableal Отличный фрагмент! Это заслуживает того, чтобы быть в ответе.
Сянкай
Office 2010 по-прежнему переполняется большим количеством выбранных строк, как упоминал @sahmeepee.
access_granted
18

Я нашел это простое решение:

  1. Выделите ячейки, которые вы хотите добавить кавычки.
  2. Щелкните правой кнопкой мыши и перейдите к: Формат ячеек → Вкладка: Номер → Категория: Пользовательский
  3. Вставьте следующее в поле Тип : "''"@"''"(см. Подробности ниже)
  4. Нажмите «хорошо»

Вставляемая строка - "''"@"''"это двойная кавычка, одинарная кавычка, одинарная кавычка, двойная кавычка, символ @, двойная кавычка, одинарная кавычка, одинарная кавычка, двойная кавычка.

Отредактировано для Excel 2010 из информации, найденной здесь .

Майкл
источник
Хммм ... это дало мне «ПУНКТ» (две одинарные кавычки), а не «(одна двойная кавычка). Я только что сделал поиск и замену, чтобы исправить это.
Клей Николс
6
Формат должен был быть \ "@ \"
манат
Этот ответ на самом деле был идеальным ответом, если вы используете LibreOffice - у него полностью отсутствует опция «текст» в меню «Формат»> «Формат номера», несмотря на то, что их документация настаивает на том, что опция есть. Если вы щелкните правой кнопкой мыши «Формат ячеек» в LibreOffice, вы получите ПОЛНЫЙ список опций интерпретации ячеек, а не несколько бесполезных 6 опций, представленных в раскрывающемся списке.
1owk3y
@ ответ маната, но без кавычек:\"@\"
MSC
12

Похоже, Powershell сбрасывает правильно. так что-то вроде

ищите powershell.exe на компьютере с Windows, если вы не знаете powershell.

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

Надеюсь, это кому-нибудь поможет.

ssaviers
источник
Для удобства Shift + щелкните правой кнопкой мыши папку, в которой сохранен CSV, и выберите здесь окно «Открыть PowerShell» , что упрощает команду до import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8. не забудьте использовать одинарные кавычки вокруг имен файлов с пробелами или другими специальными символами.
Walf
4

Это было проще всего для меня: я импортировал электронную таблицу в Access 2010 и экспортировал ее оттуда в виде текстового файла с разделителями. Дали мне кавычки вокруг моих полей. Теперь у меня уходит 42 минуты на ряды, когда у меня есть ступеньки вниз.

user326114
источник
Единственный недостаток - если само поле содержит двойные кавычки.
access_granted
3

Я нашел другую работу, которая не связана с макросом VBA, но требует Notepad ++ или подобного текстового редактора на основе макросов.

Экспортируйте ваш файл в виде текста, разделенного табуляцией, затем откройте экспортированный файл в Notepad ++. Замените все вхождения символа «табуляция» текстом «,» (т.е. буквально двойные кавычки, запятые, двойные кавычки), а затем используйте другой макрос для добавления префикса и суффикса к каждой строке текста с двойной кавычкой.

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

Blueacid
источник
1
Если вы хотите сделать это в Notepad ++, вам лучше всего использовать поиск и замену по регулярному выражению, а затем вы можете выполнить все 3 операции замены (начало строки, табуляция и конец строки) в одном месте
sahmeepee
3

Выделите ячейки, которые вы хотите добавить кавычки. Перейдите в «Формат» -> «Ячейки» -> «Пользовательское копирование» / вставьте в поле «Тип» следующее: \ »@ \» Нажмите «ОК». Будьте рады, что вы не сделали все вручную.

От: http://www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-excel-automatics/

Стив Коулман
источник
1
Это хорошо работает для альфы - вам понадобится \ "# \" для столбцов с числовыми значениями.
DropHit
Между \ "@ \" и \ "# \" это работает. Но мне все еще нужно отредактировать заголовки в Notepad ++ для числовых столбцов, а затем заменить все "" "на". Какая боль.
Гэри
Не пробовал .. но если вы создаете CSV, вы не можете просто изменить столбцы на текстовые и использовать \ "@ \"
Стив Колман
2
  1. Выделите ячейки, которые вы хотите добавить кавычки.
  2. Щелкните правой кнопкой мыши и перейдите к: Формат ячеек → Вкладка: Номер → Категория: Пользовательский
  3. Вставьте следующее в поле Тип: "''"@"''"(см. Подробности ниже)
  4. Нажмите «хорошо»
  5. Откройте файл .csv с помощью Блокнота (или аналогичного)
  6. Заменить все ' '(повторяющиеся одинарные кавычки) на "(двойные кавычки)
  7. Заменить все ;
  8. Сохраните исправленный файл .csv
Эрик
источник
1

Если вы используете Notepad ++ для добавления кавычек в начало каждой строки, просто откройте экспортированный CSV-файл, поместите курсор на 1-ую строку, 1-й столбец, затем выберите меню « Редактировать / Редактор столбцов ...» в поле « Текст для вставки », введите " , тогда в начале каждой строки будет кавычка, затем вы можете использовать регулярное выражение для поиска / замены всех вкладок.

Майкл Чжан
источник
0

Для пользователей Windows

  1. «Сохранить как» Excel файл как CSV
  2. Открыть сохраненный файл с помощью электронной таблицы Mircrosoft Works
  3. «Сохранить как» электронную таблицу как CSV
  4. Все нечисловые поля теперь имеют «вокруг них»

Обратите внимание, что это не та же самая кавычка клавиатуры, которая имеет прямое и обратное разнообразие.
Так что если вы используете CSV для загрузки в таблицу MySQL, вырежьте и вставьте в параметр ENCLOSED, иначе вы будете удивляться, почему вы получаете сообщение#1083 - Field separator argument is not what is expected

Greg
источник
3
Mircrosoft Works <-? Вы уверены, что?
Nixda
0

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

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

Моя проблема с "''"@"''"подходом - второй столбец моих данных - число, "''"@"''"подход не сделал ничего с числами. Иногда второй столбец пуст, но мне нужно было убедиться, что он представлен в окончательном текстовом файле.

user415149
источник
0

Другой способ, если у вас есть доступ MS (у меня версия 2007), импортируйте файл и экспортируйте его как текстовый файл. Затем измените .txt на .csv. Обратите внимание, что все числовые поля не будут иметь двойных кавычек вокруг него, поэтому, если вам нужны двойные кавычки вокруг чисел, тогда в Access измените поле с числового поля на текстовое поле.

декан
источник
0

Экспорт разделенных запятыми и заключенных в кавычки строк можно выполнить только в Excel 2016 и Блокноте, используя копию данных, формулу, экспорт, изменение свойств файла, замену в Блокноте, сохранение экспортированного файла и очистку. Каждый простой шаг. В деталях:

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

  2. Поместите в противном случае не встречающиеся символы, скажем «#» или «;-)» на каждом конце строки в столбце, скажите A с формулой =concat("#",trim(A1),"#"), поместив формулу на все строки другого столбца.

    • Смежные столбцы можно создавать одновременно, но не заключайте в кавычки числа, чтобы они не читались как строки.
    • Обрезка позволяет избежать любых пробелов, которые могут вызвать неумелое поведение при экспорте.
    • Строки не должны содержать «», что может нарушить импорт.
  3. Скопируйте новый столбец (столбцы) обратно через A ..., используя метод 123, чтобы не содержать формулу.

  4. Экспортируйте лист как файл CSV, чтобы поставить запятые между полями, включая числа.

  5. Измените свойства файла .csv, чтобы его можно было открыть с помощью Блокнота.

  6. Используйте Блокнот, чтобы заменить произвольные символы на «».

  7. Хотя было бы разумно использовать «в качестве произвольного символа», его нужно поместить в другую ячейку, скажем, «$ A $ 50», и тогда при экспорте появляется «» «», очевидно, еще один неудобный триггер.

  8. В блокноте файл должен быть сохранен, став импортируемым * .txt файлом, а промежуточный * .csv удален.

  9. С очисткой дополнительной таблицы миссия выполнена.

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

HGB
источник
0

Ответ Михаила от 21 августа 2014 года действительно полезен. Однако мне пришлось выполнить еще один или два дополнительных шага:

  1. Откройте файл .csv с помощью Блокнота (или аналогичного)
  2. Заменить все '' (повторяющиеся одинарные кавычки) на "(двойные кавычки)
  3. Заменить все ; (используется в качестве разделителя в немецкой версии Excel) с помощью
  4. Сохраните исправленный файл .csv
CVn
источник
Нет объяснения для downbvote? То же самое, но как другие должны учиться? Вам может показаться очевидным, что не так, мистер Даунвотер, но это может быть не очевидно для всех. Мы пытаемся создать сообщество здесь, а вы не помогаете.
Мауг
-1

Это мой рецепт. Я ненавижу делать это, но у меня не было лучшего способа. В моем случае я не получаю кавычки вокруг любой области. Мне также нужно было использовать кодировку UTF-8 и; вместо вкладок, вот что я закончил делать.

ПРИМЕЧАНИЕ: из-за легкости размещения двойных кавычек, заключенных в одинарные кавычки и т. Д., Я специально использовал «форматирование клавиатуры» для обозначения как нажатий клавиш, так и буквенных символов и строк.

  1. Вставьте новый столбец перед любой другой в вашей электронной таблице Excel (нажмите на заголовок 1-го столбца, выделите весь столбец, щелкните правой кнопкой мыши, выберите «вставить»).
  2. Выберите весь диапазон пустых ячеек из нового столбца (они выбраны по умолчанию). На поле формулы, вставки все , что вы хотите: например, xxx. Нажмите CTRL+, enterчтобы заполнить весь столбец одним и тем же значением.
  3. Сохраните файл как текст Unicode (* .txt).
  4. Откройте файл в Notepad ++.
  5. Нажмите CTRL+, fчтобы открыть поиск / замену.
  6. Перейдите на вкладку «Заменить».
  7. В «Режиме поиска» выберите «Расширенный (\ n, \ r, \ t, \ 0, \ x ...)».
  8. В поле «Поиск» введите xxxплюс tabнажатие клавиши.
  9. В поле «Заменить» введите "(двойная кавычка).
  10. Нажмите Заменить все.
  11. В поле «Поиск» tabвведите нажатие клавиши.
  12. В поле «Заменить» введите ";"(двойная кавычка, точка с запятой, двойная кавычка).
  13. Нажмите Заменить все.
  14. Вы почти закончили. Для последней двойной кавычки введите \rв поле «Поиск» и "\r"(двойная кавычка, обратная косая черта, двойная кавычка) в поле «Заменить». Нажмите Заменить все.
  15. Пока вы не используете китайский символ и т. Д., Вы можете изменить кодировку на UTF-8 и безопасно сохранить файл.
Pere
источник
-1

Я сталкивался с этой проблемой много раз. Вот самое простое решение, которое я придумала.

  1. Сохраните файл как Excel
  2. Импортируйте Excel в таблицу доступа
  3. Экспортируйте таблицу из Access в текстовый файл.

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

Вам может потребоваться создать запрос Access, чтобы расположить поля в определенном порядке или скрыть поле автоматического идентификатора, добавленное Access.

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

Гюнтер
источник
Похоже, что это дублирует информацию в ответе пользователя user326114.
fixer1234
-1

Вот как использовать приложение OpenOffice, чтобы взять электронную таблицу Excel и создать текстовый файл (csv) с кавычками вокруг каждого текстового поля.

Откройте файл Excel с помощью OpenOffice, затем выполните следующие действия:

Файл> Сохранить как

Укажите новое имя для файла, который вы собираетесь создать

Для Тип файла выберите «Тест CSV (.csv)»

установите флажок «Изменить настройки фильтра»

нажмите «Сохранить»

выберите «Сохранить текущий формат»

Разделитель поля должен быть запятой:,

Текстовый разделитель должен заключаться в кавычки:

установите флажок «Цитировать все текстовые ячейки»

нажмите "ОК"

Это сработало для меня!

Мэри Х
источник