Перенос строки csv excel

I would like to import product descriptions that need to be logically broken according by things like description, dimensions, finishes etc. How can I insert a line break so that when I import the file they will show up?

asked Jun 3, 2014 at 15:05

3

This question was answered well at Can you encode CR/LF in into CSV files?.

Consider also reverse engineering multiple lines in Excel. To embed a newline in an Excel cell, press Alt+Enter. Then save the file as a .csv. You’ll see that the double-quotes start on one line and each new line in the file is considered an embedded newline in the cell.

Community's user avatar

answered Jun 3, 2014 at 16:35

rajah9's user avatar

rajah9rajah9

11.3k5 gold badges44 silver badges57 bronze badges

3

I struggled with this as well but heres the solution. If you add " before and at the end of the csv string you are trying to display, it will consolidate them into 1 cell while honoring new line.

csvString += """+"Date Generated: n" ; 
csvString += "Doctor: " + "n"+""" + "n"; 

Luís Cruz's user avatar

Luís Cruz

14.7k16 gold badges69 silver badges99 bronze badges

answered May 8, 2015 at 16:11

Dan Robidoux's user avatar

2

I have the same issue, when I try to export the content of email to csv and still keep it break line when importing to excel.

I export the conent as this: =»Line 1″&CHAR(10)&»Line 2″

When I import it to excel(google), excel understand it as string. It still not break new line.

We need to trigger excel to treat it as formula by:
Format -> Number | Scientific.

This is not the good way but it resolve my issue.

answered Dec 30, 2018 at 5:41

Luan Nguyen's user avatar

2

supposing you have a text variable containing:

const text = 'wonderful text with n newline'

the newline in the csv file is correctly interpreted having enclosed the string with double quotes and spaces

'" ' + text + ' "' 

answered Mar 31, 2021 at 22:21

Jonathan's user avatar

JonathanJonathan

5575 silver badges9 bronze badges

On Excel for Mac 2011, the newline had to be a r instead of an n

So

""first linersecond line""

would show up as a cell with 2 lines

answered Oct 19, 2018 at 12:58

Sam's user avatar

SamSam

5,1252 gold badges43 silver badges51 bronze badges

2

I was concatenating the variable and adding multiple items in same row. so below code work for me. «n» new line code is mandatory to add first and last of each line if you will add it on last only it will append last 1-2 character to new lines.

  $itemCode =  '';
foreach($returnData['repairdetail'] as $checkkey=>$repairDetailData){

    if($checkkey >0){
        $itemCode   .= "n".trim(@$repairDetailData['ItemMaster']->Item_Code)."n";
    }else{
        $itemCode   .= "n".trim(@$repairDetailData['ItemMaster']->Item_Code)."n";             
    }
    $repairDetaile[]= array(
        $itemCode,
    )
}
// pass all array to here 
foreach ($repairDetaile as $csvData) { 
    fputcsv($csv_file,$csvData,',','"');
}
fclose($csv_file);  

answered Jun 13, 2017 at 13:12

kantsverma's user avatar

kantsvermakantsverma

5871 gold badge11 silver badges29 bronze badges

I converted a pandas DataFrame to a csv string using DataFrame.to_csv() and then I looked at the results. It included rn as the end of line character(s). I suggest inserting these into your csv string as your row separation.

Depending on the tools used to generate the csv string you may need escape the character (rn).

answered Aug 3, 2022 at 16:49

MustardMan's user avatar

If you are doing this manually, download LibreOffice and use LibreOffice Calc to import your CSV. It does a much better job of stuff like this than any version of Excel I’ve tried, and it can save to XLS or XLSX as required if you need to transfer to Excel afterwards.

But if you’re stuck with Excel and need a better fix, there seems to be a way. It seems to be locale dependent (which seems idiotic, in my humble opinion). I don’t have Excel 2007, but I have Excel 2010, and the example given:

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

doesn’t work. I wrote it in Notepad and chose Save as…, and next to the Save button you can choose the encoding. I chose UTF-8 as suggested, but with no luck. Changing the commas to semicolons worked for me, though. I didn’t change anything else, and it just worked. So I changed the example to look like this, and chose the UTF-8 encoding when saving in Notepad:

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

But there’s a catch! The only way it works is if you double-click the CSV file to open it in Excel. If I try to import data from text and chose this CSV, then it still fails on quoted newlines.

But there’s another catch! The working field separator (comma in the original example, semicolon in my case) seems to depend on the system’s Regional Settings (set under Control Panel -> Region and Language). In Norway, comma is the decimal separator. Excel seems to avoid this character and prefer a semicolon instead. I have access to another computer set to UK English locale, and on that computer, the first example with a comma separator works fine (only on doubleclick), and the one with semicolon actually fails! So much for interoperability. If you want to publish this CSV online and users may have Excel, I guess you have to publish both versions and suggest that people check which file gives the correct number of rows.

So all the details that I’ve been able to gather to get this to work are:

  1. The file must be saved as UTF-8 with a BOM, which is what Notepad does when you chose UTF-8. I tried UTF-8 without BOM (can be switched easily in Notepad++), but then double-clicking the document fails.
  2. You must use a comma or a semicolon separator, but not the one that is the decimal separator in your Regional Settings. Perhaps other characters work, but I don’t know which.
  3. You must quote fields that contain a newline with the » character.
  4. I’ve used Windows line-endings (rn) both in the text field and as a record separator, that works.
  5. You must double-click the file to open it, importing data from text doesn’t work.

Hope this helps someone.

Содержимое баз данных обычно извлекается в виде файла с расширением .csv. Однако, это просто текстовый файл, не слишком удобный для чтения. Для работы с содержимым базы необходимо представить её в другом формате – зачастую удобнее всего листы Excel. О том, какие существуют способы это сделать, какой из них лучше, и какие бывают ошибки при переносе данных, будет рассказано в этой статье.

Содержание

  1. Как конвертировать CSV в формат Excel
  2. Открытие CSV-документа в Excel
  3. Открытие CSV-документа через Windows Explorer
  4. Импорт CSV в Excel
  5. Проблемы при конвертации и их решения
  6. Файл открывается неправильно
  7. Исчезают нули в начале чисел
  8. Часть значений выглядит как даты
  9. Как импортировать в Excel множественные CSV-файлы

Как конвертировать CSV в формат Excel

Существуют различные пути, которыми документ формата CSV, скачанный из базы данных, может быть перенесён в Excel. Мы обсудим три из них:

  1. Прямое открытие в Excel.
  2. Открытие через Windows Explorer.
  3. Импорт документа со сменой формата.

Открытие CSV-документа в Excel

Excel может открывать документы с расширением .csv напрямую, без конвертации. Формат после открытия указанным способом не меняется, сохраняется расширение .csv – хотя после редактирования расширение можно поменять.

  1. Запустите Excel, кликните на «Файл«, затем «Открыть«.
  2. В появившемся окне выберите опцию «Текстовые файлы» из развернувшегося перечня.

Конвертировать CSV в Excel в виде таблицы

  1. Найдите необходимый Вам документ и нажмите на него двойным кликом мыши.

Документы .csv открываются в Excel сразу, без дополнительных манипуляций. А вот файлы .txt потребуют конвертации – возникнет окошко «Мастера импорта текста«.

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

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

Мастер запустится, если поменять расширение документа на .txt. Также импорт файла можно начать иначе, о чём пойдёт речь далее, после описания второго способа открытия.

Если после открытия документа в него внести изменения, Excel предложит сохранить его в формате .xls (или .xlsx), поскольку иначе часть форматирования будет потеряна. Потом всегда останется возможность сменить формат обратно, однако, может утратиться другая часть содержимого – в начале чисел могут исчезнуть нули, часть записей может поменять свой вид.

Открытие CSV-документа через Windows Explorer

Этот путь принципиально не отличается от предыдущего. Чтобы открыть документ, достаточно два раза кликнуть на него в Windows Explorer.

Перед открытием убедитесь, что рядом с именем документа находится значок программы Excel, а не какой-то другой – это означает, что именно Excel выбран как программа, которой следует открывать подобные файлы. Иначе откроется какая-либо иная программа. Сменить её на Excel можно так:

  1. Вызовите кликом правой кнопки мыши на любой файл .csv контекстное меню и в нём примените Открыть с помощью… > Выбрать программу.
  2. Выберите Excel (desktop) из Рекомендованных программ, обозначьте его как программу, которую следует применять для подобных файлов всегда (поставьте галочку внизу), и закройте окошко нажатием ОК.

Конвертировать CSV в Excel в виде таблицы

Импорт CSV в Excel

Также возможно превратить открываемый документ в книгу Excel. Формат сменится на .xls для ранних версий Excel (2000, 2003) и на .xlsx — для всех остальных. Всё содержимое будет отображено на одном листе.

  1. Нажмите на ячейку в листе, куда должен начаться импорт. Обычно это самая первая ячейка в таблице, А1. Начиная с неё, будет заполнено столько строк, сколько есть в открываемом файле, и столько столбцов, сколько имеется значений в каждом столбце.
  2. Во вкладке “Данные” в группе “Получение внешних данных” выберите “Из текста”.

Конвертировать CSV в Excel в виде таблицы

  1. В возникшем окне найдите требуемый документ и кликните на него два раза (также можно использовать кнопку Импорт внизу окна).

Конвертировать CSV в Excel в виде таблицы

  1. Далее нужно следовать пошаговой инструкции открывшегося Мастера импорта текста.

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

Конвертировать CSV в Excel в виде таблицы

Шаг 1. Мастер предложит Вам выбрать тип файла – как нетрудно догадаться, это будет «с разделителями» (по-английски — delimited), и строку, с которой начнётся перенос содержимого — скорее всего, нужно начать со строки 1, если вы не хотите переносить только часть содержимого. В окне ниже будут показаны первые строки из выбранного документа.

Конвертировать CSV в Excel в виде таблицы

Шаг 2. Теперь требуется понять, какой используется разделитель (их может быть больше одного) в файле, и указать этот знак в Мастере. В нём есть опции выбора из стандартных разделителей, но если в документе применён нетипичный символ, можно выбрать Другой и ввести требуемый знак. В используемом для демонстрации файле разделители — Запятая и Таб. Запятые разделяют ячейки с характеристиками продуктов, такими как порядковый номер и количество проданных экземпляров, а табуляция отделяет один продукт от другого — информация о каждом должна начинаться с новой строки.

Также нужно определить и указать ограничитель текста. Это символ, поставленный перед и после каждого отрезка текста, который должен располагаться в одной ячейке. Благодаря ограничителю, каждый подобный отрезок воспринимается как отдельное значение, даже если внутри него присутствуют символы, выбранные для разделения значений. В нашем документе каждое значение обрамлено кавычками — потому, даже если в нём присутствует запятая (например «начало, потом продолжение»), весь его текст будет помещён в одну ячейку, а не в две последовательные.

Конвертировать CSV в Excel в виде таблицы

Шаг 3. Здесь достаточно взглянуть на превью и, если на нём не видно недопустимых огрехов, нажать Готово. Может случиться так, что некоторые из значений будут разделены не одним разделителем, а несколькими, в результате между ними возникнут ячейки без значений. Чтобы такого не происходило, выберите флажок Считать последовательные разделители одним.

  1. Выберите путь назначения (это может быть новый или уже существующий лист) и нажмите ОК, чтобы закончить процесс импорта.

Конвертировать CSV в Excel в виде таблицы

Также можно нажать Свойства — там содержатся другие возможности. Например, можно форматировать содержимое, настроить разметку и то, как информация будет обновляться.

Конвертировать CSV в Excel в виде таблицы

Иногда результат конвертации оказывается далёким от ожидаемого. О том, как этот результат можно изменить, пойдёт речь в следующем разделе статьи.

Проблемы при конвертации и их решения

За всё время, которое существует формат CSV, никто не удосужился официально задокументировать его. Потому, хотя и предполагается, что для разделения значений должны использоваться запятые, на самом деле в разных базах данных используются различные разделительные знаки — точка с запятой, знак табуляции и другие.

Ограничители текста также могут варьироваться – чаще всего это либо кавычки, либо метка порядка байтов. Ограничителей может и вовсе не быть – тогда символ, используемый как разделитель, всегда воспринимается как таковой (тогда это обычно не запятая – она слишком часто применяется в тексте — а иной, менее распространённый символ).

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

Файл открывается неправильно

Признаки. Всё содержимое документа помещается в первый столбец.

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

Решения. Есть разные способы решить эту проблему:

  1. Сменить разделяющий знак в самом документе. Откройте его в Notepad или подобном редакторе, и в начальную строку (пустую, все данные должны быть в строках ниже) внесите указанный ниже текст:
  • для смены разделителя на запятую: sep=,
  • для смены на точку с запятой: sep=;

Иной символ, написанный после sep= в начальной строке, также станет разделителем.

  1. Разделительный знак, используемый в файле, можно указать и в самой программе Excel. В версиях 2016, 2013 или 2010 года для этого нужно открыть вкладку Данные и выбрать “Текст по столбцам” в группе “Работа с данными”.

Конвертировать CSV в Excel в виде таблицы

После этого откроется окно “Мастера распределения текста по столбцам”. Там из предложенных форматов данных нужно выбрать те, что с разделителями. Потом нужно нажать Далее и, после выбора разделителя, Готово.

Конвертировать CSV в Excel в виде таблицы

  1. Чтобы документ автоматически открывался через Мастер импорта, а не просто в листе Excel, расширение можно сменить с .csv на .txt. В Мастере есть возможность указать любой символ как разделяющий — каким образом это сделать, в статье объяснено ранее.
  2. Используйте VBA. Воспользоваться можно, например, — он подойдёт для Excel 2000 или 2003. Код можно изменить так, чтобы он подходил для других версий.

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

  1. Измените разделитель и знак десятичной дроби в настройках компьютера

В Панели управления, вызываемой кнопкой Пуск, выберите “Дополнительные параметры” из перечня “Региональные Стандарты”. После клика возникнет окошко “Настройка формата” – в нём можно выбрать “Разделитель элементов списка” и разделитель целой и дробной части числа. Если в качестве разделительного знака в файлах требуется запятая, сначала установите точку как знак для дроби. Может оказаться и наоборот – нужна точка с запятой как разделительный символ. Тогда для дробей можно оставить любой знак, это не вызовет конфликта.

Конвертировать CSV в Excel в виде таблицы

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

Исчезают нули в начале чисел

Признак. Некоторые из значений в исходном документе – числа, которые начинаются нулями, не отделёнными знаком дроби (например, шифры и коды с фиксированным количеством цифр, логины и пароли, показания счётчиков и приборов). В Excel нули в начале таких чисел исчезают. Если отредактировать файл и потом сохранить его как книгу Excel, в этой книге уже нельзя будет найти, где были те числа с нулями.

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

Решение. Смените расширение на .txt, чтобы при открытии документа включился Мастер импорта. Когда дойдёте до Шага 3, смените формат столбцов с числами, которые начинаются нулями, на текстовый.

Конвертировать CSV в Excel в виде таблицы

Часть значений выглядит как даты

Признак. В виде дат отображаются значения, в оригинале представляющие собой обычный текст или числа.

Причина. Общий формат предполагает превращение в даты значений, напоминающих таковые для Excel. Если в CSV-документе будет отдельное значение вроде may12, то в Excel-листе оно отобразится как дата.

Решение. Сходно с таковым в предыдущем случае. Смените расширение на .txt, в Мастере смените формат значений, конвертируемых в даты, на текстовый.

Конвертировать CSV в Excel в виде таблицы

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

Как импортировать в Excel множественные CSV-файлы

В Excel возможно открыть сразу несколько CSV-файлов.

  1. Нажмите Файл > Открыть и выберите опцию Текстовые файлы из выпадающего листа внизу.
  2. Чтобы выбрать несколько файлов, расположенных рядом, сначала выберите первый из них, затем нажмите Shift и кликните на последний. Кроме выбранных файлов, выделятся все файлы между ними.
  3. Кликните Открыть.

Конвертировать CSV в Excel в виде таблицы

Недостаток этого метода в том, что каждый выбранный файл будет открыт в Excel отдельно. Переход от одного документа к другому может увеличивать временные затраты. Однако, затем возможно скопировать содержимое их всех в листы одной книги.

Объяснение было долгим, однако, теперь у Вас получится без особых затруднений открыть любой файл CSV в Excel. Если что-то кажется непонятным на первый взгляд, просто следуйте указанным шагам — и всё прояснится.

Оцените качество статьи. Нам важно ваше мнение:

data = [
['13','2да','3нет','4впредкушение','53','654','7русский'],
['13','2да','3нет','4влюбленность','50','62','7русский']
]

out = [','.join(row)+'n' for row in data]

with open('document.csv', 'a') as fd:
    fd.writelines(out)

Но вообще для работы с csv есть встроенная библиотека, через нее удобнее работать напрямую, и можно задавать различные параметры файла (символ разделителя, обрамление кавычками и т.п.)

import csv

data = [
['13','2да','3нет','4впредкушение','53','654','7русский'],
['13','2да','3нет','4влюбленность','50','62','7русский']
]
with open('document2.csv', 'w', newline='') as fd:
    writer = csv.writer(fd)
    writer.writerows(data)

И вообще какое-то странное у Вас представление о формате csv. Зачем у каждого значения приписан его индекс? Обычного так не делается, пишутся просто сами значения, индекс итак известен.

Статус темы:

Закрыта.

  1. Fidkin

    Fidkin
    New Member
    Пользователи

    Регистрация:
    8 июн 2013
    Сообщения:
    18

    Всем привет

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

    Нужно не <br> чтобы в другую ячейку попадало, а именно переход на новую строку внутри ячейки.

    Запарился уже искать

    ПАМАХИТЕ КТО ЧЕМ МОГЁТ


  2. Root

    Root
    Администратор
    Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.817
    Город:
    Барнаул

    Здравствуйте.
    Насколько я знаю такого нет в CSV =)


  3. Fidkin

    Fidkin
    New Member
    Пользователи

    Регистрация:
    8 июн 2013
    Сообщения:
    18

    А как же комбинация ctrl+enter ?
    В приложенном файле пример есть, можете посмотреть, что оно существует.

    Как имитировать ctrl+enter при парсинге повторяющихся границ, чтобы цикл разделить переходом на новую строку ВНУТРИ ЯЧЕЙКИ, вот ведь в чем вопрос, как решить пока не очень понятно.

    В обучалках есть только тег {br} но он выкидывает на новую строку внутри таблицы, а не внутри ячейки.

    Вложения:


  4. Root

    Root
    Администратор
    Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.817
    Город:
    Барнаул

    Там нет символа специального, там обычный перенос строки, только вот ячейка там взята в кавычки. «текст с переносами»;»текст с переносами»


  5. Djahat

    Djahat
    Well-Known Member
    Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    533
    Город:
    Мордор

    И как Вы такое в выдаче настройках в границе парсинга воспроизведете ?


  6. Root

    Root
    Администратор
    Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.817
    Город:
    Барнаул

    В шаблон вывода прописать:
    «<CD_GRAN_1!>»;»<CD_GRAN_2!>»


  7. Root

    Root
    Администратор
    Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.817
    Город:
    Барнаул

    А так же: вкладка «контент» — группа «общее» — правее галочки «в одну строку» есть кнопка, там прописать «заменять символы переносов строк» на {br}


  8. Dartray

    Dartray
    New Member
    Пользователи

    Регистрация:
    27 янв 2017
    Сообщения:
    5

    Через дополнительные настройки границ парсинга -> Функции замены, можно заменить <br> на {br}.
    В итоге данные запишутся в одну ячейку с переносом строки.

    Тоже самое работает и для повторяющихся границ. Достаточно в виде разделителя {br} указать и всё.

    Последнее редактирование: 27 янв 2017


  9. Root

    Root
    Администратор
    Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.817
    Город:
    Барнаул

    Значит что-то не так делаете. Мы не знаем, что вы делаете, так как вы не предоставляете никаких данных! У всех других людей с этим все нормально!


  10. Root

    Root
    Администратор
    Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.817
    Город:
    Барнаул

    2017-01-27_17-21-29.png


  11. kagorec

    kagorec
    Администратор
    Команда форума
    Администратор

    Изза одного тега {br} прямь целая тема, с разъяснениями ибо одного ответа мало. Куда катимся ребята?))


  12. Dartray

    Dartray
    New Member
    Пользователи

    Регистрация:
    27 янв 2017
    Сообщения:
    5

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

    Администратору (Root), честь и хвала за оперативность и такую поддержку своего продукта!

Статус темы:

Закрыта.

Поделиться этой страницей


Форум по парсингу сайтов и интернет магазинов

Понравилась статья? Поделить с друзьями:
  • Перенос строк ячейки vba excel
  • Перенос строки в ячейке excel php
  • Перенос строк с листа на лист в excel
  • Перенос строки в формуле word
  • Перенос строки в строке формул excel