Как объединить файлы csv в один файл
Перейти к содержимому

Как объединить файлы csv в один файл

  • автор:

Как объединить .csv файлы?

Как объединить .csv файлы?

При работе с интернет магазином, в котором можно импортировать товар используя файл Excel с расширением .csv, встала задача объединить 5-6 файлов в один. Это нужно было для удобства импорта, да и для удобства редактирования и сортировки всего товара.
В данной небольшой статье мы покажем наглядно как это сделать не прибегая к сторонним программам. Использовать будем только командную строку.
В качестве примера мы возьмем два файла с расширением .csv. Используя данное руководство можно таким же образом соединить хоть 20 файлов, суть не изменится.
Итак, мы имеем 2 (или несколько) CSV файлов:

2 прайс листа

Для примера: в левом 2118 строк, в правом 1973 строки:

2 прайс листа перед объединением

Теперь перейдем к «сборке» этих 2-х файлов в один:

Командная строка

  1. Поместите Ваши файлы CSV в одну папку. (для удобства проще всего сложить все файлы в корень какого либо диска, и назвать папку к примеру — hsp).
  2. Запускаем командную строку.
  3. Переходим в папку которую только что создали, вводим в командную строку: cd c:\hsp
  4. Жмем Enter
  5. Далее вводим: copy *.csv hsp.csv
    (hsp.csv – имя финального файла)
  6. Жмем Enter и видим что соединение прошло успешно:

Объединение csv с помощью командной строки

Соединенный файл csv с помощью командной строки

Внедрили бы уже такую фишку в редакторы CSV файлов, ну или в тот же Excel.

Ну вот и все! Ничего сложного!

Объединить CSV

О формате CSV
Полное имя CSV с разделителями-запятыми Значения, это a Общая, простая, широко используемая форма табличных данных. Хранится в простом текстовом формате, разделенных разделителями. Форматируется как таблица базы данных, каждая строка отделяется разделителем, одна строка представляет собой запись, один столбец — это Это текстовый формат, поэтому он очень интуитивно понятен и удобен для чтения.
Файл CSV можно открыть непосредственно с помощью программного обеспечения Notepad или с помощью программного обеспечения Excel.
Файл CSV имеет несколько правил: начало не может быть пустым. Никакие пустые строки, никакие числа и специальные символы не поддерживаются.

CSV — это формат, используемый для хранения записей, заказов и прочих данных.
Иногда вам может потребоваться статическое объединение нескольких CSV-файлов. Ручное объединение — это утомительный процесс. Данный инструмент поможет выполнить задачу быстро, объединив множество файлов CSV в один результирующий файл CSV.

Входной формат: CSV

Выходной формат: CSV

Объединить несколько файлов TXT или CSV в один

Сервис позволяет бесплатно собрать несколько файлов со строковыми данными в один. Например, бывают ситуации, когда необходимо добавить коды маркировки из нескольких файлов в один файл CSV. Для этого добавьте все файлы в один ZIP архив и загрузите в сервис, затем нажмите кнопку Объединить файлы.

У нас есть генератор DataMatrix и сервис подготовки этикеток маркировки.

Заказывайте конвертацию и печать этикеток по электронной почте — support@primenenie-kkt.ru, или по контактному телефону (812) 645-90-71.

Наши услуги:
  • АРМ Фрактал — обработка реестров платежей
  • Печать этикеток DataMatrix для маркировки товаров
  • Конвертер DataMatrix из PDF в CSV
Инструменты:
  • Конвертер DataMatrix из PDF в CSV (коды маркировки)
  • Конвертер EPS в CSV (коды маркировки)
  • Генератор этикеток Честный знак с DataMatrix
  • Обрезать криптохвост — сделать короткий код маркировки
  • Генератор этикеток со штрихкодом EAN-13
  • Объединить несколько файлов c кодами маркировки в один
  • Разделить PDF-файл с этикетками на страницы
  • Конвертер кодов маркировки из CSV в XLSX

Как объединить файлы csv в один файл

Сообщений: 213 Регистрация: 16.02.2013

08.09.2016 10:15:28

Добрый день.
В просторах интернета не смог найти макроса для что бы «сцепить» несколько файлов csv в один (нашел примеры с xls — очень крутой, запускаешь макрос и он обьденяет фалы которые ты сам выбреешь в проводнике записывает их друг под другом)
Возможно у Вас есть примеры подобного и для csv.

Изменено: Marat_Mamedov — 08.09.2016 10:16:54

Пользователь

Сообщений: 23755 Регистрация: 22.12.2012

08.09.2016 10:24:05

copy /b *.csv all.csv

это командная строка.

Пользователь

Сообщений: 213 Регистрация: 16.02.2013

08.09.2016 14:25:09

Нашел на просторах интернета (немого подкрутил вроде работает)
Может кому пригодиться

Option Explicit Sub SCV_and_Sheets1() Dim iBeginRange As Object, lCalc As Long, lCol As Long Dim oAwb As String, sCopyAddress As String, sSheetName As String Dim lLastrow As Long, lLastRowMyBook As Long, li As Long, iLastColumn As Integer Dim wsSh As Object, wsDataSheet As Object, bPolyBooks As Boolean, avFiles Dim wbAct As Workbook Dim bPasteValues As Boolean On Error Resume Next 'Выбираем диапазон выборки с книг Set iBeginRange = Range("A1") 'Application.InputBox("Выберите диапазон сбора данных." & vbCrLf & _ "1. При выборе только одной ячейки данные будут собраны со всех листов начиная с этой ячейки. " & _ vbCrLf & "2. При выделении нескольких ячеек данные будут собраны только с указанного диапазона всех листов.", Type:=8) 'для указания диапазона без диалогового окна: 'Set iBeginRange = Range("A1:A10") 'диапазон указывается нужный 'Если диапазон не выбран - завершаем процедуру 'If iBeginRange Is Nothing Then Exit Sub 'Указываем имя листа 'Допустимо указывать в имени листа символы подставки ? и *. 'Если указать только * то данные будут собираться со всех листов 'If sSheetName = "" Then sSheetName = "*"sSheetName = InputBox("Введите имя листа, с которого собирать данные(если не указан, то данные собираются со всех листов)", "Параметр") 'Если имя листа не указано - данные будут собраны со вех листов 'If sSheetName = "" Then sSheetName = "*" sSheetName = "*" On Error GoTo 0 'Запрос - вставлять на результирующий лист все данные 'или только значения ячеек (без формул и форматов) bPasteValues = (MsgBox("Вставлять только значения?", vbQuestion + vbYesNo, "Excel-VBA") = vbYes) 'Запрос сбора данных с книг(если Нет - то сбор идет с активной книги) If MsgBox("Собрать данные с нескольких книг?", vbInformation + vbYesNo, "Excel-VBA") = vbYes Then avFiles = Application.GetOpenFilename("Excel files(*.csv*),*.csv*", , "Выбор файлов", , True) If VarType(avFiles) = vbBoolean Then Exit Sub bPolyBooks = True lCol = 1 Else avFiles = Array(ThisWorkbook.FullName) End If 'отключаем обновление экрана, автопересчет формул и отслеживание событий 'для скорости выполнения кода и для избежания ошибок, если в книгах есть иные коды With Application lCalc = .Calculation .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual End With 'создаем новый лист в книге для сбора Set wsDataSheet = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)) 'если нужно сделать сбор данных на новый лист книги с кодом 'Set wsDataSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) 'цикл по книгам For li = LBound(avFiles) To UBound(avFiles) If bPolyBooks Then Set wbAct = Workbooks.Open(filename:=avFiles(li)) Else Set wbAct = ThisWorkbook End If oAwb = wbAct.Name 'цикл по листам For Each wsSh In wbAct.Sheets If wsSh.Name Like sSheetName Then 'Если имя листа совпадает с именем листа, в который собираем данные 'и сбор идет только с активной книги - то переходим к следующему листу If wsSh.Name = wsDataSheet.Name And bPolyBooks = False Then GoTo NEXT_ With wsSh Select Case iBeginRange.Count Case 1 'собираем данные начиная с указанной ячейки и до конца данных lLastrow = .Cells(1, 1).SpecialCells(xlLastCell).Row iLastColumn = .Cells.SpecialCells(xlLastCell).Column sCopyAddress = .Range(.Cells(iBeginRange.Row, iBeginRange.Column), .Cells(lLastrow, iLastColumn)).Address Case Else 'собираем данные с фиксированного диапазона sCopyAddress = iBeginRange.Address End Select lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row + 1 'вставляем имя книги, с которой собраны данные If lCol Then wsDataSheet.Cells(lLastRowMyBook, 1).Resize(Range(sCopyAddress).Rows.Count).Value = oAwb If bPasteValues Then 'если вставляем только значения .Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol).PasteSpecial xlPasteValues Else .Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol) End If End With End If NEXT_: Next wsSh Application.DisplayAlerts = False If bPolyBooks Then wbAct.Close False Next li With Application .ScreenUpdating = True: .EnableEvents = True: .Calculation = lCalc End With Columns("A:A").Select Selection.Delete Shift:=xlToLeft Rows("1:1").Select Selection.Delete Shift:=xlUp Range("A1").Select End Sub

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *