2011-04-18 3 views
17

엑셀 통합 문서 (xls/xlsx)에서 새 워크 시트로 덤프하려는 CSV 파일이 거의 없습니다. 어떻게해야합니까?python : 엑셀 통합 문서 작성 및 워크 시트로 CSV 파일 덤프

Google 검색 결과 'pyXLwriter'가 발견되었지만 프로젝트가 중지 된 것처럼 보입니다. 'pyXLwriter'를 시도해 보는 동안 어떤 대안/제안/모듈이 있는지 알고 싶습니까?

많은 감사.

[편집]

여기 내 솔루션입니다 : (사람이 더 날씬하고, 더 파이썬 솔루션을 의견을 들으?.)

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" 
+0

조심해. Xlwt는 입력 수를 65,556으로 제한합니다. 그러나 행 수가 많으면 xlsxwriter로 이동하십시오. –

+0

Sikuli를 사용해보세요. 자이 썬 프로젝트이지만 GUI 작업을 자동화하는 데 사용할 수 있습니다. – Patrick

답변

27

확실하지 ... 또한

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") 
3

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

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

+0

감사합니다 ..하지만 만약 내가 하나씩 열어서 잘라 내기 및 붙여 넣기를하고있는 CSV를 통해 20이 있다면 .. hehe :) – siva

+0

빈 템플릿 파일을 얻으려면 Excel을 열고 Test를 입력하십시오. A1에서 빈 스프레드 시트에서 save as를 사용하고 파일 유형으로 XML Spreadsheet 2003을 선택한 다음 이름을 지정하십시오. 당신은 XML 구조를 볼 때 무엇을해야하는지 알 것이다. – adorablepuppy

+0

이것은 매우 흥미로운 소리! – Sergio

12

xlwt tutorial에서 필요한 모든 것을 찾을 수 있습니다. 이 라이브러리 (xlrd and xlwt)는 Python에서 Excel 상호 작용을 관리하기위한 가장 일반적인 선택입니다. 단점은 현재 Excel 바이너리 형식 (.xls) 만 지원한다는 것입니다. 당신이 "훨씬 날씬하고, 많은 파이썬"을 의미하는하지만 당신은 확실히 조금을 단장 수있는 것을

+0

그래, thorugh 찾고 튜토리얼 PDF. 아이디어를 클릭하면 여러 장이있는 xls 파일을 만들고 python csv reader 모듈/메서드를 사용하여 한 줄씩 시트에 덤프 할 수 있습니다. :) – siva

+0

예, 이것은 꽤 많은 아이디어입니다. 미리 시트가 필요하지 않을 때 시트를 만드는 것이 좋습니다. – Sergio

+5

xlwt 자습서 링크가 손상되었습니다. –

3

GitHub의의의 repo "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." 
3

xlsxwriter를 사용하여 python으로 Excel 파일을 작성하고 작성하십시오.

하여 설치한다 :이 답 답 자체에 내놓고있다

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() 
1

xlsxwriter 설치 PIP. 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() 
관련 문제