2010-09-20 11 views
6

Pracuję nad projektem Pythona (django). Piszę kod csv w następujący sposób:jak pogrubić dane CSV w programie excel?

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']) 

ten wiersz jest nagłówkiem i muszę pogrubić cały tekst nagłówka. Pobieram csv jako plik ms "Excel".

Jak mogę to zrobić? Proszę pomóż!

+3

Co sprawia, że ​​można myśleć o dodawaniu dekoracji w stosunku do danych w pliku CSV? Gdzie to widziałeś? –

Odpowiedz

12

Nie można tego zrobić w CSV. Możesz ograniczyć wyświetlany wynik lub użyć innego formatu obsługującego style tekstu.

4

CSV zawiera tylko dane, nie zawiera żadnych informacji o formatowaniu. Jeśli chcesz sformatować swoje dane, proponuję utworzyć plik XLS zamiast pliku CSV. Spróbuj użyć czegoś takiego jak xlwt.

+0

-1 pyexcelerator to abandonware. Zamiast tego użyj xlwt. –

+0

dzięki! Za szybką odpowiedź. –

+0

@John, dzięki za wskazanie tego. Nie używałam wcześniej pyexceleratora lub nie musiałam eksportować XLS. Po prostu pojawił się pierwszy w google. Zmienię moją odpowiedź, aby była dokładniejsza. – Tauren

1

Bardziej nowoczesna alternatywa to xlsxcessive do eksportowania pliku Excel 2007+ .xlsx. Oto przykład, który sprawia, że ​​wiersz nagłówka jest nieco większy i pogrubiony. To naprawdę nie jest zbyt trudne i udokumentowane całkiem nieźle.

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') 
Powiązane problemy