programing

python: excel 워크북을 만들고 csv 파일을 워크시트로 덤프합니다.

css3 2023. 6. 14. 22:08

python: excel 워크북을 만들고 csv 파일을 워크시트로 덤프합니다.

Excel 워크북(xls/xlsx)에 새 워크시트로 덤프하고 싶은 csv 파일이 몇 개 없습니다.어떻게 이를 달성할 수 있습니까?

구글에서 'pyXLriter'를 찾았는데 프로젝트가 중단된 것 같습니다.'pyXLriter'를 사용해 보는 동안 대안/제안/모듈이 있는지 알고 싶습니다.

대단히 고맙습니다.

[편집]

여기 제 해결책이 있습니다. (누구나 훨씬 더 희박하고 많은 비단결 같은 해결책을 가지고 있나요?코멘트를 합니다. thx)

import glob
import csv
import xlwt
import os

wb = xlwt.Workbook()


for filename in glob.glob("c:/xxx/*.csv"):
    (f_path, f_name) = os.path.split(filename)
    (f_short_name, f_extension) = os.path.splitext(f_name)
    ws = wb.add_sheet(str(f_short_name))
    spamReader = csv.reader(open(filename, 'rb'), delimiter=',',quotechar='"')
    row_count = 0
    for row in spamReader:
        for col in range(len(row)):
            ws.write(row_count,col,row[col])
        row_count +=1

wb.save("c:/xxx/compiled.xls")

print "Done"

"훨씬 더 말랐고, 훨씬 더 비단결 같은" 것이 무엇을 의미하는지는 확실하지 않지만, 당신은 확실히 그것을 조금 더 세련시킬 수 있습니다.

import glob, csv, xlwt, os
wb = xlwt.Workbook()
for filename in glob.glob("c:/xxx/*.csv"):
    (f_path, f_name) = os.path.split(filename)
    (f_short_name, f_extension) = os.path.splitext(f_name)
    ws = wb.add_sheet(f_short_name)
    spamReader = csv.reader(open(filename, 'rb'))
    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            ws.write(rowx, colx, value)
wb.save("c:/xxx/compiled.xls")

xlwt 튜토리얼에서 필요한 모든 것을 찾을 수 있습니다.이 라이브러리(xlrdxlwt)는 Python에서 Excel 상호 작용을 관리하기 위한 가장 일반적인 선택입니다.단점은 현재 Excel 이진 형식(.xls)만 지원한다는 것입니다.

xlsxwriter를 사용하여 python에서 excel 파일을 만들고 씁니다.

설치 방법: pip install xlsxwriter

import xlsxwriter


# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()

# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 20)

# Add a bold format to use to highlight cells.
bold = workbook.add_format({'bold': True})

# Write some simple text.
worksheet.write('A1', 'Hello')

# Text with formatting.
worksheet.write('A2', 'World', bold)

# Write some numbers, with row/column notation.
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)

# Insert an image.
worksheet.insert_image('B5', 'logo.png')

workbook.close()

저는 항상 문자열을 통해 Office 2003 XML 형식을 작성합니다.xlsx 문서를 구성하는 문서를 작성하고 압축하는 것보다 훨씬 쉽고 관리하기 쉽습니다.또한 외부 라이브러리가 필요하지 않습니다.(그들만의 것을 쉽게 굴릴 수 있지만)

또한 Excel은 CSV 파일 로드를 지원합니다.공백으로 구분되거나 문자로 구분됩니다.바로 로드하거나 복사하여 붙여넣은 다음 옵션에서 텍스트 열 단추를 누릅니다.물론 이 옵션은 파이썬과는 아무런 관련이 없습니다.

GitHubrepo "Kampfmitexcel"에서도 사용할 수 있습니다.

import csv, xlwt, os

def input_from_user(prompt):
    return raw_input(prompt).strip()

def make_an_excel_file_from_all_the_txtfiles_in_the_following_directory(directory):
    wb = xlwt.Workbook()
    for filename in os.listdir(data_folder_path):
        if filename.endswith(".csv") or filename.endswith(".txt"):
            ws = wb.add_sheet(os.path.splitext(filename)[0])
            with open('{}\\{}'.format(data_folder_path,filename),'rb') as csvfile:
                reader = csv.reader(csvfile, delimiter=',')
                for rowx, row in enumerate(reader):
                    for colx, value in enumerate(row):
                        ws.write(rowx, colx, value)
    return wb

if __name__ == '__main__':
    path_to_data = input_from_user("Where is the data stored?: ")
    xls = make_an_excel_file_from_all_the_txtfiles_in_the_following_directory(path_to_data)
    xls_name = input_from_user('What do you want to name the excel file?: ')
    xls.save('{}\\{}{}'.format(data_folder_path,xls_name,'.xls'))
    print "Your file has been saved in the data folder."

이것은 당신의 대답 자체를 바탕으로 한 것입니다.하지만 xlsxwriter를 사용하는 이유는 xlsx 형식의 데이터를 더 많이 수용하기 때문입니다.xlwt는 65556 행 및 xls 형식으로 제한합니다.

import xlsxwriter
import glob
import csv
workbook = xlsxwriter.Workbook('compiled.xlsx') 
for filename in glob.glob("*.csv"):
    ws = workbook.add_worksheet(str(filename.split('.')[0]))
    spamReader = csv.reader(open(filename, 'rb'), delimiter=',',quotechar='"')
    row_count = 0
    print filename
    for row in spamReader:
        for col in range(len(row)):
            ws.write(row_count,col,row[col])
        row_count +=1

workbook.close()

언급URL : https://stackoverflow.com/questions/5705588/python-creating-excel-workbook-and-dumping-csv-files-as-worksheets