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

31

Я использую Excel и хотел бы экспортировать мой файл в виде листа .scsv (значения, разделенные точкой с запятой) вместо .csv. Есть какой-либо способ сделать это?

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

Kamilski81
источник
Если вы готовы немного заняться программированием, конвертер можно было бы довольно легко написать на языке программирования Python, используя его встроенный csvмодуль, который позволит легко читать файлы Excel в формате CSV, а затем писать новые версии, которые были о любом разделителе желаемом.
Мартино
Это зависит от того, есть ли в записях запятые или нет.
AER

Ответы:

20

Как насчет выполнения Tab Delimited и замены вкладок точкой с запятой?

В Excel: Файл -> Сохранить как -> в поле Формат выберите «Tab с разделителями текста (.txt)», затем его сохранить.

Откройте файл в блокноте и откройте окно замены. Поскольку вы не можете использовать вкладку непосредственно в этом окне, скопируйте вкладку из документа, а затем вставьте ее в поле «Найти» и вставьте свою; в коробку замены. Тогда замени все.

Я предполагаю, что это будет работать, потому что очень редко иметь вкладки в документе Excel.

Роберт
источник
Несмотря на то, что он является базовым для большинства пользователей, не могли бы вы также предоставить набор инструкций?
Канадский Люк ВОССТАНОВИТЕ МОНИКУ
Можно ли это сделать полностью в Excel, и если да, то как?
Мартино
Я не думаю, что это можно сделать полностью в Excel. Excel скрывает форматирование (вкладки), поэтому вы не сможете их заменить. Заменив их точкой с запятой, вы также не сможете открыть с помощью Excel (это будет просто одна гигантская клетка)
Robert
Я предполагаю, что использование регулярных выражений для замены и размещения \tбудет работать
Yassin Hajaj
Если в вашем файле есть специальные символы другого языка (например, греческого), это не работает, так как символы символов заменяются на «?»
Joos
8

Я не думаю, что вы можете установить разделитель вывода непосредственно в Excel, но (при условии Windows) вы можете изменить разделитель списка ОС на ;- это сделано в Regional Settings->Customize. Excel будет использовать этот параметр для вывода ваших CSV-файлов.

WMZ
источник
5
Важное примечание: если вы сделаете это, все программы Windows, которые используют интернационализированные библиотеки Windows, примут это; является символом-разделителем для всех файлов CSV. Если это одноразовое решение, возможно, имеет смысл сохранить обычный CSV-файл и использовать редактор для замены запятых на точки с запятой
Исаак Рабинович,
Это изменение также повлияет на открытие файлов CSV в Excel. И, как упоминалось в комментарии выше, возможно, больше программ. Если вы хотите создать более совместимый CSV-файл, поместите его sep=;поверх CSV-файла, а затем, после сохранения файла, вы можете изменить разделитель списков на прежний.
Пап
7

Используйте LibreOffice Calc (это бесплатная загрузка и работает на всех основных операционных системах).

Чтобы сохранить значения, разделенные точкой с запятой:

  1. Откройте файл xlsx / csv
  2. Файл -> Сохранить как ...
  3. Выберите «Фильтр CSV» в качестве фильтра (должен быть по умолчанию, если имя вашего файла заканчивается .csv)
  4. Отметьте «Изменить настройки фильтра» и нажмите Сохранить.
  5. Когда он запрашивает подтверждение формата файла, нажмите «Использовать текстовый формат CSV»
  6. Измените «Разделитель полей» на точку с запятой (здесь вы можете ввести что угодно).
  7. Нажмите ОК

LO Calc будет правильно обрабатывать запятые и точки с запятой в значениях ячеек.

naught101
источник
1
Спасибо, хорошо работает. Это должен быть принятый ответ.
Ортомала Локни
4

Если вам нужен скрипт, вставьте следующее в модуль.

Option Explicit
Sub export2scsv()
    Dim lastColumn As Integer
    Dim lastRow As Integer
    Dim strString As String
    Dim i As Integer, j As Integer

    lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count
    lastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

    Open "output.scsv" For Output As #1

    For i = 1 To lastRow
        Cells(i, 1).Select
        strString = ""
        For j = 1 To lastColumn
            If j <> lastColumn Then
                strString = strString & Cells(i, j).Value & ";" ' Use semicolon instead of pipe.
            Else
                strString = strString & Cells(i, j).Value
            End If
        Next j
        Print #1, strString
    Next i

    Close #1
End Sub
user157938
источник
4

Чтобы изменить запятую на точку с запятой в качестве разделителя Excel по умолчанию для CSV - перейдите в раздел «Регион» -> «Дополнительные параметры» -> вкладка «Числа» -> «Разделитель и тип списка»; вместо значения по умолчанию,

Майкл
источник
3

Вы можете изменить разделитель глобально через Настроить формат.

Перейдите в раздел «Регион и язык», откройте «Регион», на вкладке «Форматы» нажмите кнопку «Дополнительные настройки», а в таблице «Номера» измените значение для разделителя списка:

Санта Фе
источник
Не просто публикуйте ссылку на ответ, включайте в ответ существенные детали. Если целевая страница исчезает, то ответ бесполезен. Кроме того, хотя я не эксперт по Windows, это выглядит так же, как и ответ wmz от трехлетней давности.
blm
0

1.> Измените формат файла на .CSV (точка с запятой)

Для достижения желаемого результата нам нужно временно изменить настройку разделителя в настройках Excel.

Переместить в файл -> Параметры -> Дополнительно -> Редактирование раздела

Снимите флажок «Использовать системные разделители» и введите запятую в поле «Десятичный разделитель».

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

user318853
источник
5
Взято с ashwaniashwin.wordpress.com/2013/04/19/… Пожалуйста, обратите внимание, что указание авторства является обязательным.
Арджан
0

Если ваш список значений находится в столбце A, попробуйте следующее: Ячейка B2 = A1 & ";" & Ячейка A2 B3 = B2 & ";" & A3 Скопируйте ячейку B3 в конец списка. Если вы скопируете и вставите последнюю ячейку в своем списке в качестве значений, у вас будет список, разделенный точкой с запятой. Затем вы можете скопировать это в Блокнот, Word или куда угодно.

бородавочник
источник
0

Вы можете сделать это легко в 4 этапа с помощью функции конкатенации Excel.

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

  2. Начните новый столбец в конце ваших данных и в первой строке используйте =concatenate()функцию. Обязательно выделите все ячейки, которые вы хотите отобразить в конечном файле. Ваша формула будет выглядеть примерно так=concatenate(A1,A2,A3...)

  3. Скопируйте и вставьте полученную формулу вниз во все строки данных.

  4. Выделите весь столбец формул и вставьте Специальные -> Значения в соседний столбец. Теперь все ваши данные разделены точками с запятой.

Наконец, экспортируйте файл в выбранный вами формат. Если вы экспортируете это как .txt в Windows, вы можете просто изменить расширение файла на .csv, потому что оба являются текстовыми форматами.

Грег Кавано
источник
-3

Я использую простым способом: -

  1. Откройте файл CSV (точка с запятой) с помощью Блокнота или Блокнота ++.
  2. Найдите и замените (Ctrl + H) от точки с запятой (;) до запятой (,).
  3. Сохраните и закройте файл.
  4. Теперь откройте файл изменения с помощью MS-Excel.
Vineet
источник
Это работает, только если ни одна строка не содержит «;» или "," иначе это не сгенерирует то, что на самом деле хочет автор.
Ramhound
1
Это идет в неправильном направлении. Вопрос состоит в том, как создать файл значений, разделенных точкой с запятой; этот ответ предполагает, что файл значений, разделенных точкой с запятой, уже существует, и описывает, как создать файл CSV - неправильно, поскольку он не учитывает ключевое ограничение вопроса: а именно, что известно , что данные содержат разделитель ,
G-Man говорит: «Восстановите Монику»