2011-04-18 10 views
17

के रूप में एक्सेल वर्कबुक और डंपिंग सीएसवी फाइलें बनाना मेरे पास कुछ सीएसवी फाइलें हैं जिन्हें मैं एक्सेल वर्कबुक (xls/xlsx) में नए वर्कशीट्स के रूप में डंप करना चाहता हूं। मैं इसे कैसे प्राप्त करूं?पायथन: वर्कशीट्स

गुगल और 'pyXLwriter' मिला लेकिन ऐसा लगता है कि परियोजना रोक दी गई थी। जबकि मैं कोशिश कर रहा हूं कि 'pyXLwriter' कोई विकल्प/सुझाव/मॉड्यूल हैं?

बहुत धन्यवाद। मैं हमेशा से ही तार के माध्यम से Office 2003 XML स्वरूप बारे में (किसी बहुत leaner, ज्यादा pythonic समाधान है टिप्पणी करना 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" 
+0

देखें। Xlwt 65,556 पर इनपुट की संख्या को सीमित करता है। लेकिन यदि आपके पास पंक्तियों की अधिक संख्या है, तो xlsxwriter –

+0

के लिए जाएं सिक्ुली आज़माएं। यह एक ज्योथन परियोजना है, लेकिन आप इसका उपयोग किसी भी जीयूआई कार्यों को स्वचालित करने के लिए कर सकते हैं। – Patrick

उत्तर

27

सुनिश्चित नहीं हैं कि आप "बहुत leaner, ज्यादा pythonic" मतलब लेकिन आप निश्चित रूप से इसे थोड़ा सजाना सकता है:

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

:

[संपादित करें]

यहाँ मेरी समाधान है। यह करना बहुत आसान है और xlsx दस्तावेज़ का गठन करने के लिए लिखने और ज़िप करने से प्रबंधित करना बहुत आसान है। इसे किसी भी बाहरी पुस्तकालय की आवश्यकता नहीं है। (हालांकि कोई आसानी से अपना खुद का रोल कर सकता है)

इसके अलावा, एक्सेल CSV फ़ाइलों को लोड करने का समर्थन करता है। दोनों स्थान सीमित या चरित्र सीमित। आप इसे या तो लोड कर सकते हैं, या & कॉपी करने की कोशिश कर सकते हैं, फिर विकल्पों में टेक्स्ट-टू-कॉलम बटन दबाएं। इस विकल्प में निश्चित रूप से अजगर के साथ कुछ लेना देना नहीं है।

+0

धन्यवाद .. लेकिन अगर मेरे पास 20 से अधिक सीएसवी नहीं है जो मैं एक करके एक खोलने और कट और पेस्ट करने जा रहा हूं .. हे :) :) – siva

+0

एक खाली टेम्पलेट फ़ाइल प्राप्त करने के लिए मैं खेल सकता हूं, मैं एक्सेल खोलता हूं, टेस्ट दर्ज करता हूं ए 1 में, रिक्त स्प्रेडशीट के रूप में सहेजें का उपयोग करें, फ़ाइल प्रकार के रूप में एक्सएमएल स्प्रेडशीट 2003 का चयन करें, फिर इसे एक नाम दें। जब आप इसके लिए एक्सएमएल संरचना देखते हैं तो आपको पता चलेगा कि क्या करना है। – adorablepuppy

+0

यह बहुत दिलचस्प लगता है! – Sergio

12

आपको इस xlwt tutorial में आपको जो कुछ चाहिए वह आपको मिलेगा। यह पुस्तकालय (xlrd and xlwt) पायथन में एक्सेल इंटरैक्शन के प्रबंधन के लिए सबसे लोकप्रिय विकल्प हैं। नकारात्मकता यह है कि, फिलहाल, वे केवल एक्सेल बाइनरी प्रारूप (.xls) का समर्थन करते हैं।

+0

हाँ, ट्यूटोरियल पीडीएफ thorugh देख रहे हैं। एक विचार पर क्लिक किया गया जहां मैं कई चादरों के साथ एक एक्सएलएस फाइलें बना सकता था और चादरों में लाइन से लाइन को डंप करने के लिए पायथन सीएसवी रीडर मॉड्यूल/विधि का उपयोग करता था। :) – siva

+0

हां, यह बहुत अधिक विचार है। मैं आपको चादरें बनाने की सलाह दूंगा जब आपको उनकी आवश्यकता हो, पहले से नहीं। – Sergio

+5

xlwt ट्यूटोरियल लिंक टूटा हुआ है –

3
इसके अलावा

GitHub रेपो "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 का उपयोग करें।

कर इसे इंस्टॉल: पिप स्थापित

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 इस उत्तर आपका जवाब पर ही आधारित है। लेकिन 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()