.csv를 .xls / xlsx로 일괄 변환하는 방법


11

.csv 파일의 디렉토리를 .xls 또는 .xlsx 형식으로 빠르게 변환하는 방법을 찾고 있습니다 (또는 할 수 있으면 좋을 것입니다).

이 작업을 수행하는 쉬운 방법이 있습니까, 아니면 타사 프로그램을 설치해야합니까?


1
왜 그렇게해야할지 모르겠습니다. csv는 Excel에서 잘 열립니다. 상호 작용이 필요한 사람은 문제없이 열 수 있습니다.
Jody

2
당신은 맞습니다 Excel은 csv와 xls / xlsx를 잘 엽니 다. 그러나 다른 프로그램은 그렇지 않습니다. =)
mindless.panda 2016 년

1
어떤 프로그램을 사용하려고하십니까?
커크

답변:


21

파이썬을 좋아하고 가지고 있다고 가정하면 (어떤 이유로 든) 내가 작성한 스크립트를 사용할 수 있습니다.

import os
import glob
import csv
import xlwt # from http://www.python-excel.org/

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = xlwt.Workbook()
    ws = wb.add_sheet('data')
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader):
            for c, val in enumerate(row):
                ws.write(r, c, val)
    wb.save(csvfile + '.xls')

모든 CSV 파일이있는 디렉토리를 실행하면 파일이 모두 변환되고 ".xls"가 끝납니다.

최대 약 1 개의 Mrow를 지원하는 Excel 2007+ (xlsx 파일)의 경우 :

import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = openpyxl.Workbook()
    ws = wb.active
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader, start=1):
            for c, val in enumerate(row, start=1):
                ws.cell(row=r, column=c).value = val
    wb.save(csvfile + '.xlsx')

2
Macintosh에서는 위의 xlsx 버전을 사용했습니다. 파이썬에서 "universal-newline mode"오류를 피하기 위해 "rb"를 "rU"로 변경해야했습니다. "열의 행"및 "열의 열거"에 "start = 1"을 사용하면 실제 데이터의 위에 빈 행과 빈 열이 남게됩니다. 스프레드 시트 (Excel 2011)의 A1 셀 (왼쪽 위)에서 데이터를 시작한 "start = 0"으로 둘 다 변경했습니다. 또한 파일의 .csv 부분 (예 : nnnn.csv.xlsx를 nnnn)을 제거하기 위해 마지막 줄을 "wb.save (os.path.splitext (csvfile) [0] + '.xlsx')"로 변경했습니다. xlsx).
Michael S Taylor

1

여기 에는 아마도 펄 스크립트가 있지만 Excel에 이미 내장 된 것을 수행하는 많은 작업처럼 보입니다.


1

귀하의 질문에 언급되지 않은 것이 많이 있습니다.

CVS 파일이 다음과 유사한 디렉토리 구조에 있다고 가정

c:\randompath\CSV\
    a.csv
    b.csv
    c.csv
      :
      :
    z.csv

그리고 당신은 결국

c:\randompath\XLS\
    a.xls
    b.xls
    c.xls
      :
      :
    z.xls

나는 당신이하고자하는 선행 작업 대 청소 작업의 비율에 따라 갈 세 가지 경로를 생각할 수 있습니다.

  1. 프리 코딩 없음 : Windows 탐색기를 사용하여 CSV 파일로 이동합니다. 변환 할 파일을 선택하는 데 가장 적합한 방법 (lasso, ctrl + a, ctrl + click, shift + click)을 선택한 다음 선택한 파일 중 하나를 마우스 오른쪽 버튼으로 클릭하고 열다. Excel에서 모든 파일이 열립니다. 그런 다음 각 파일에 대해 "파일"및 "다른 이름으로 저장"을 선택하고 마지막으로 저장하려는 새 파일 형식을 선택할 수 있습니다.
  2. 단순 배치 파일 : 해당 배치 파일은 와일드 카드 및 / 또는 각 루프 구조에 대해 각 CSV 파일을 열어서 이전처럼 수동으로 처리 할 수 ​​있습니다.
  3. Excel 스프레드 시트 내에서 VBA 프로그램 만들기 : VBA는 각 CSV 파일을 자동으로 연 다음 Excel 형식으로 저장할 수 있습니다. 각 파일을 열 때 xls 또는 xlsx를 선택할 수있는 간단한 메시지 상자를 추가 할 수도 있습니다.

이 작업을 수행하기 위해 코드를 작성하지는 않았지만 아직 시작점에 대한 아이디어를 제공하고 있습니다. 아마도 당신이 원하는 것에 대해 더 자세한 정보를 줄 수 있다면 나 또는 다른 포럼 회원의 접근 방식을 다루는 방법에 대한 자세한 설명을 얻을 수 있습니다.


0

Windows의 경우? CoolUtils " Total CSV Converter "명령 행 버전은 JSON, Access, DBF, XML 및 SQL을 포함한 많은 출력 형식 지원하며 40 달러에 불과합니다. 하위 디렉토리를 재귀하고, 원본 CSV 파일을 삭제하고, 모든 파일을 하나의 문서에 결합하는 등의 작업을 수행 할 수 있습니다.

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>

" 고급 CSV 변환기 "($ 40-200)는 Excel을 설치하지 않고도 신속하게 수행 할 수있는 휴대용 EXE입니다.

http://www.dbf2002.com/csv-converter/commandline.html

"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR

SoftInterface의 " XLS 변환 "은 Excel을 사용할 수 있지만 (필수는 아님) 더 비싸지 만 ($ 500 +) 더 많은 형식을 지원하며 더 많은 옵션이 있습니다.

http://www.softinterface.com/Convert-XLS/Convert-XLS.htm

"c:\Program Files (x86)\Softinterface, Inc\Convert XLS\ConvertXLS.exe" /V /S"c:\base\*.csv" /T"c:\exports\*.xlsx" /F6 /C51 /M2

" Gnumeric "은 직접 변환을 수행 할 수있는 오픈 소스 스프레드 시트 프로그램이지만 2014 년 8 월에 Windows 용으로 중단되었습니다.

http://www.gnumeric.org/

ssconvert file.csv file.xlsx

Python을 설치 한 경우 " csv2odf "는 오픈 소스 옵션이며 템플릿 방식을 사용하여 ods, odt, html, xlsx 또는 docx 파일을 생성합니다.

http://sourceforge.net/projects/csv2odf/

csv2odf data.csv template.odt output.xlsx

0

Node 8 이상 및 bash :

npm install -g pguardiario/csv2xlsx

for file in *.csv; do csv2xlsx "$file"; done

-1

쉬운 방법 : Microsoft Excel에서 csv 파일을 열고 텍스트를 열로 변환하십시오 (셀 / 텍스트를 선택하고 메뉴-데이터-텍스트를 열로 클릭) 변환 옵션을 설정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.