programing

Excel 워크시트를 CSV로 저장하는 방법

newsource 2023. 4. 20. 21:31

Excel 워크시트를 CSV로 저장하는 방법

Excel 스프레드시트를 읽고 일부 워크시트를 CSV 파일로 저장하는 Python 스크립트를 작성하려고 합니다.

이거 어떻게 해?

Python에서 Excel 파일을 읽고 쓸 수 있는 서드파티 모듈을 찾았는데, 제가 알기로는 Excel (*.xls) 형식으로만 파일을 저장할 수 있습니다.여기서 틀렸다면 이 모듈들을 어떻게 사용하는지 보여주는 몇 가지 코드 예를 들어주시면 감사하겠습니다.

또, 이해할 수 없지만, Windows 전용의 솔루션이라고 생각되기 때문에, 어쨌든 도움이 되지 않는 솔루션이 있습니다.유닉스에서는 이 솔루션을 사용하고 싶기 때문입니다.어쨌든, 이 솔루션을 Windows 하에서도, 내가 하고 싶은 일을 할 수 있도록 확장할 수 있는 것은 확실치 않습니다.

2개의 라이브러리를 사용한 가장 기본적인 예는 다음과 같습니다.

  1. xls 워크북 열기
  2. 첫 번째 스프레드시트 참조
  3. 바이너리로 열기 대상 CSV 파일 쓰기
  4. 기본 csv 기록기 개체를 만듭니다.
  5. 첫 번째 스프레드쉬트의 모든 행을 루핑합니다.
  6. 행을 CSV로 덤프합니다.

import xlrd
import csv

with xlrd.open_workbook('a_file.xls') as wb:
    sh = wb.sheet_by_index(0)  # or wb.sheet_by_name('name_of_the_sheet_here')
    with open('a_file.csv', 'wb') as f:   # open('a_file.csv', 'w', newline="") for python 3
        c = csv.writer(f)
        for r in range(sh.nrows):
            c.writerow(sh.row_values(r))

import openpyxl
import csv

wb = openpyxl.load_workbook('test.xlsx')
sh = wb.active
with open('test.csv', 'wb') as f:  # open('test.csv', 'w', newline="") for python 3
    c = csv.writer(f)
    for r in sh.rows:
        c.writerow([cell.value for cell in r])

사용.pandas조금 짧아집니다.

import pandas as pd

df = pd.read_excel('my_file', sheetname='my_sheet_name')  # sheetname is optional
df.to_csv('output_file_name', index=False)  # index=False prevents pandas to write row index

# oneliner
pd.read_excel('my_file', sheetname='my_sheet_name').to_csv('output_file_name', index=False)

2021년 12월 및 Python 3 기준:

openpyxlAPI가 충분히 변경되었습니다(https://openpyxl.readthedocs.io/en/stable/usage.html) 참조). @Boud(현재는 @Zeugma?)에 의해 답변의 이 부분을 업데이트했습니다).

import openpyxl
import csv

wb = openpyxl.load_workbook('test.xlsx')
sh = wb.active # was .get_active_sheet()
with open('test.csv', 'w', newline="") as file_handle:
    csv_writer = csv.writer(file_handle)
    for row in sh.iter_rows(): # generator; was sh.rows
        csv_writer.writerow([cell.value for cell in row])

@Leonid는 특히 다음과 같은 유용한 코멘트를 했습니다.

csv.writer에는 커스텀 딜리미터 등 몇 가지 추가 옵션이 있습니다.

csv_writer = csv.writer(fout, delimiter='|', quotechar='"', quoting=csv.QUOTE_MINIMAL)

HTH

또는 모듈을 사용하여 xls 또는 xlsx 문서를 각각 읽고 쓸 모듈을 사용합니다.

또는 Jython을 사용하는 경우 Apache POI 라이브러리를 사용하여 다음 중 하나를 읽을 수 있습니다..xls또는.xlsx네이티브 CSV 모듈은 계속 사용할 수 있습니다.

먼저 Excel 스프레드시트를 Panda로 읽어보십시오.아래 코드는 Excel 스프레드시트를 Panda로 Import합니다.OrderedDict여기에는 모든 워크시트가 포함됩니다.DataFrames그럼 간단하게worksheet_name특정 워크시트에 액세스하기 위한 키로서DataFrame필요한 워크시트만 저장하여csv을 사용하여 파일하다df.to_csv()이것이 당신의 경우에 효과가 있기를 바랍니다.

import pandas as pd
df = pd.read_excel('YourExcel.xlsx', sheet_name=None)
df['worksheet_name'].to_csv('output.csv')  

언급URL : https://stackoverflow.com/questions/10802417/how-to-save-an-excel-worksheet-as-csv