2010-09-20 122 views
6

Trabajo en un proyecto python (django). Escribo código csv de la siguiente manera,cómo datos en negrita csv en 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']) 

esta fila es el encabezado y necesito todo el texto en negrita cabecera. Descargo csv como archivo ms "Excel".

¿Cómo puedo hacerlo? ¡Por favor ayuda!

+3

¿Qué le hace pensar que es posible proporcionar decoración además de datos en un archivo CSV? ¿Dónde has visto esto hecho? –

Respuesta

12

No hay forma de hacerlo en CSV. Todos podrían limitar el resultado, o podría usar otro formato que admita estilos de texto.

4

CSV solo contiene datos, no contiene ninguna información de formato. Si necesita formatear sus datos, le sugiero que cree un archivo XLS en lugar de un archivo CSV. Intenta usar algo como xlwt.

+0

-1 pyexcelerator es abandware. Use xlwt en su lugar. –

+0

¡gracias! Por su rápida respuesta. –

+0

@John, gracias por señalar eso. No he usado pyexcelerator antes, o tenía la necesidad de exportar XLS. Simplemente salió primero en google. Cambiaré mi respuesta para ser más preciso. – Tauren

1

Una alternativa más moderna es xlsxcessive para exportar un archivo Excel 2007+ .xlsx. Aquí hay un ejemplo que hace que la fila del encabezado sea ligeramente más grande y negrita. Realmente no es demasiado difícil, y está documentado bastante bien.

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') 
Cuestiones relacionadas