2010-09-20 129 views
6

我在python(django)項目上工作。我寫csv代碼如下,如何在excel中加粗csv數據?

response = HttpResponse(mimetype='text/csv')  
response['Content-Disposition'] = 'attachment; filename=DueDateWiseSearch.csv'  
writer = csv.writer(response)  
writer.writerow(['Infant Name','Mother Name','Mother Address', 
    'Next Vaccine Dose','Due date','Coments']) 

這行是標題,我需要加粗所有標題文本。我下載csv作爲ms「Excel」文件。

我該怎麼辦?請幫忙!

+3

是什麼讓您認爲除了CSV文件中的數據之外還可以提供裝飾?你在哪裏見過這件事? – 2010-09-20 14:09:44

回答

12

在CSV中沒有辦法做到這一點。你可以全部限制輸出,或者你可以使用另一種支持文本樣式的格式。

4

CSV只包含數據,它不包含任何格式信息。如果您需要格式化數據,我會建議實際創建一個XLS文件而不是CSV文件。嘗試使用類似xlwt的內容。

+0

-1 pyexcelerator放棄了。改用xlwt。 – 2010-09-20 07:16:54

+0

謝謝!您的快速回復。 – 2010-09-20 08:28:39

+0

@John,謝謝你指出。我之前沒有使用pyexcelerator,或者需要導出XLS。它只是在谷歌首先出現。我會改變我的答案,以便更準確。 – Tauren 2010-09-20 19:19:27

1

用於導出Excel 2007+ .xlsx文件的更現代的替代方法是xlsxcessive。以下是一個使標題行稍大且粗體的示例。這真的不是太難,而且記錄得很好。

from xlsxcessive.xlsx import Workbook, save 

#Create some fake test data 
import urllib, random 
words = [x.strip().title() for x in urllib.urlopen('http://dictionary-thesaurus.com/wordlists/Nouns%285,449%29.txt').readlines()] 
names = [] 
for i in range(25): 
    address = '%s %s %s' % (random.randint(0, 100000), random.choice(words), random.choice(['Ave', 'St', 'Blvd', 'Ct', 'Ln'])) 
    names.append((random.choice(words), random.choice(words), address)) 

#Create the workbook and sheet 
wb = Workbook() 
s1 = wb.new_sheet('Sheet 1') 

#Create the bold style for the header row 
headerfmt = wb.stylesheet.new_format() 
headerfmt.font(size=14, bold=True) 

#Write out the header row 
header = ['Infant Name','Mother Name','Mother Address',] 
for col, label in enumerate(header): 
    s1.cell(coords=(0,col), value=label, format=headerfmt) 

#Write out the data  
for rownumber, rowvalues in enumerate(names, start=1): 
    for col, value in enumerate(rowvalues): 
     s1.cell(coords=(rownumber, col), value=value) 

save(wb, 'stackoverflow_problem.xlsx')