반응형
Python csv를 xlsx로 변환
이 게시물에는 csv에서 xls로 변환하는 Python의 예가 나와 있습니다.
그러나 내 파일의 행이 65536개를 넘었기 때문에 xls는 동작하지 않습니다.파일 이름을 xlsx로 지정해도 차이가 없습니다.xlsx로 변환할 Python 패키지가 있나요?
다음은 xlsxwriter를 사용하는 예입니다.
import os
import glob
import csv
from xlsxwriter.workbook import Workbook
for csvfile in glob.glob(os.path.join('.', '*.csv')):
workbook = Workbook(csvfile[:-4] + '.xlsx')
worksheet = workbook.add_worksheet()
with open(csvfile, 'rt', encoding='utf8') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
workbook.close()
참고로 Excel 2007 xlsx/xlsm 파일을 읽고 쓸 수 있는 openpyxl이라는 패키지도 있습니다.
내 라이브러리와 함께pyexcel,
$ pip install pyexcel pyexcel-xlsx
하나의 명령줄로 실행할 수 있습니다.
from pyexcel.cookbook import merge_all_to_a_book
# import pyexcel.ext.xlsx # no longer required if you use pyexcel >= 0.2.2
import glob
merge_all_to_a_book(glob.glob("your_csv_directory/*.csv"), "output.xlsx")
각 CSV에는 자체 시트가 있으며 이름은 파일 이름이 됩니다.
팬더를 사용한 심플한 2라인 코드 솔루션
import pandas as pd
read_file = pd.read_csv ('File name.csv')
read_file.to_excel ('File name.xlsx', index = None, header=True)
최초 설치 openpyxl:
pip install openpyxl
그 후, 다음과 같이 입력합니다.
from openpyxl import Workbook
import csv
wb = Workbook()
ws = wb.active
with open('test.csv', 'r') as f:
for row in csv.reader(f):
ws.append(row)
wb.save('name.xlsx')
팬더 라이브러리를 단독으로 사용하여 .csv 파일을 읽고 .xlsx 파일로 저장하는 답변을 추가합니다.이 예에서는,pandas.read_csv(문서 링크) 및pandas.dataframe.to_excel(문서 링크).
완전히 재현 가능한 예에서는 numpy를 사용하여 난수만 생성합니다.이 예에서는 독자적인 .csv 파일을 사용하는 경우 삭제할 수 있습니다.
import pandas as pd
import numpy as np
# Creating a dataframe and saving as test.csv in current directory
df = pd.DataFrame(np.random.randn(100000, 3), columns=list('ABC'))
df.to_csv('test.csv', index = False)
# Reading in test.csv and saving as test.xlsx
df_new = pd.read_csv('test.csv')
writer = pd.ExcelWriter('test.xlsx')
df_new.to_excel(writer, index = False)
writer.save()
행을 열거/루프하지 않고 CSV에서 XLSX로의 간단한 파일 변환:
import pyexcel
sheet = pyexcel.get_sheet(file_name="myFile.csv", delimiter=",")
sheet.save_as("myFile.xlsx")
주의:
- file_name 이 정말로 길 경우(패스 제외 30자 미만), Excel 이 로드하려고 하면 XLSX 파일이 에러를 발생시킵니다.엑셀이 오류를 수정해 주겠다고 제안할 예정인데 답답하네요.
- 디렉토리내의 모든 CSV 파일을 1개의 XLSX 워크북에 조합하는 훌륭한 답이 있습니다.이것은 단순히 1 대 1 CSV 파일을 XLSX 파일로 변환하는 것과는 다른 사용 사례에 적합합니다.
openpyxl lib를 사용하는 방법:
import csv
from openpyxl import Workbook
def convert_csv_to_xlsx(self):
wb = Workbook()
sheet = wb.active
CSV_SEPARATOR = "#"
with open("my_file.csv") as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
for idx, val in enumerate(col.split(CSV_SEPARATOR)):
cell = sheet.cell(row=r+1, column=idx+1)
cell.value = val
wb.save("my_file.xlsx")
간단한 방법이 있다
import os
import csv
import sys
from openpyxl import Workbook
reload(sys)
sys.setdefaultencoding('utf8')
if __name__ == '__main__':
workbook = Workbook()
worksheet = workbook.active
with open('input.csv', 'r') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
for idx, val in enumerate(col.split(',')):
cell = worksheet.cell(row=r+1, column=c+1)
cell.value = val
workbook.save('output.xlsx')
언급URL : https://stackoverflow.com/questions/17684610/python-convert-csv-to-xlsx
반응형
'programing' 카테고리의 다른 글
| Resharper가 설치되어 있는 Visual Studio에서는 키보드 단축키가 활성화되지 않습니다. (0) | 2023.04.13 |
|---|---|
| Openpyxl에서 스타일 설정 (0) | 2023.04.13 |
| bash 명령어에 여러 env 변수를 설정하는 방법 (0) | 2023.04.13 |
| '치명적 오류:Optional value'의 래핑을 해제하는 동안 예기치 않게 0이 발견되었습니까? (0) | 2023.04.13 |
| UITextField 텍스트 변경 이벤트 (0) | 2023.04.13 |