2

Я только что обнаружил, что во многих кодировках символов есть непечатаемые символы, предназначенные для разделения разных частей информации, например, символ 31 ASCII является "разделителем единиц". Кажется, что если бы я мог использовать один из этих символов в качестве разделителя в «значениях, разделенных запятыми / символами» (CSV), я мог бы избежать проблем с экранированием значений, которые могут встречаться в тексте, например запятых.

Можно ли заставить MS Excel (2007) использовать "разделитель единиц" вместо запятой? Если так, как я могу это сделать?

Редактировать:

Как я могу ввести непечатный символ? Если я пытаюсь найти Unicode "001F" в таблице символов, я получаю выделенное пустое поле и сообщение "Нет доступных символов", как показано ниже:

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

2 ответа2

3

Быстрый тест подтверждает, что @ bobSmith1432 имеет работоспособное решение.

Я использовал Notepad++, чтобы сгенерировать ASCII-символ 31 и скопировать его для вставки в List separator: поле.

В Windows 7 перейдите на Control Panel и выберите « Region and Language . На вкладке Format нажмите кнопку Additional settings... Откроется окно « Customize Format . Здесь замените запятую в поле List separator: на свой символ ASCII 31, вставив его из какого-либо другого источника.

Вы, вероятно, должны сразу изменить это значение на запятую после сохранения таблицы в формате CSV.

Изменить: В качестве альтернативы Notepad++, вы можете использовать обычный старый блокнот. Включив блокировку номера, откройте Блокнот, удерживайте клавишу Alt и нажмите 0 3 1 на цифровой клавиатуре. Затем отпустите клавишу Alt . Нажмите Ctrl A, а затем Ctrl C, чтобы выбрать непечатаемый символ и скопировать его. Затем вы можете вставить символ в окно Customize Format .

1

Я просто подумал о другом способе сделать это. Создайте дополнительный лист в таблице, которую вы хотите экспортировать. В A1 нового листа разместите следующую формулу:

=CONCATENATE(Sheet1!A1,CHAR(31),Sheet1!B1,CHAR(31),Sheet1!C1)

Измените Sheet1 на имя рабочего листа, который вы хотите экспортировать как CSV. Повторите шаблон для дополнительных столбцов. Приведенная выше формула захватывает столбцы A , B и C Для D также используйте следующее:

=CONCATENATE(Sheet1!A1,CHAR(31),Sheet1!B1,CHAR(31),Sheet1!C1,CHAR(31),Sheet1!D1)

Надеюсь, вы можете увидеть образец там. Скопируйте эту ячейку на столько строк, сколько хотите. CHAR(31) вставляет нужный вам символ ASCII.

Затем сохраните как CSV и экспортируйте только этот новый лист. Поскольку у вас есть только один столбец, запятые или другие разделители добавляться не будут.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .