2008-09-20 6 views
3

J'utilise le module Python pyexcelerator pour générer des fichiers Excel. Je souhaite appliquer un style gras à une partie du texte de la cellule, mais pas à la cellule entière. Comment le faire?Comment appliquer un style gras à un mot spécifique dans un fichier Excel en utilisant Python?

+0

Pouvez-vous comprendre il en créant un tel fichier dans Excel puis en le lisant avec pyexcelerator? –

+0

'pyexcelerator' a longtemps été remplacé par' xlwt'. Les versions récentes de 'xlwt' supportent Rich Text, démontré dans [cette question] (http://stackoverflow.com/questions/14149748/format-individual-characters-in-a-single-excel-cell-with-python/14248375). Pour générer des fichiers Excel 2007+ (.xlsx), 'xlsxwriter' est le chemin à parcourir, et il prend également en charge le format RTF. –

Répondre

1

Voici un exemple de la documentation Excel:

With Worksheets("Sheet1").Range("B1") 
    .Value = "New Title" 
    .Characters(5, 5).Font.Bold = True 
End With 

Ainsi, la propriété Characters de la cellule que vous voulez manipuler est la réponse à votre question. Il est utilisé comme caractères (début, longueur). PS: Je n'ai jamais utilisé le module en question, mais j'ai utilisé l'automatisation Excel COM dans les scripts Python. La propriété Characters est disponible en utilisant win32com.

+0

Merci pour la réponse, Je veux vraiment savoir si cela est possible en utilisant le langage Python, Excel le supporte à coup sûr, mais je ne pouvais pas trouver un moyen de le faire en utilisant Python. – Ashish

+0

je ne serai pas capable de l'utiliser comme j'utilise ubuntu, ce que je cherchais était peut-être un hack propre dans le module pyexcelerrator, parce qu'il donne des données d'enregistrement biff, et d'autres enregistrements applicables à cell.anyway je vais Essayez-le si je suis capable de l'exposer comme un service Web. – Ashish

2

Trouvé par exemple ici: Generate an Excel Formatted File Right in Python

Notez que vous faites un objet de police, puis le donner à un objet de style, puis fournir cet objet de style lors de l'écriture à la feuille:

import pyExcelerator as xl 

def save_in_excel(headers,values): 
    #Open new workbook 
    mydoc=xl.Workbook() 
    #Add a worksheet 
    mysheet=mydoc.add_sheet("test") 
    #write headers 
    header_font=xl.Font() #make a font object 
    header_font.bold=True 
    header_font.underline=True 
    #font needs to be style actually 
    header_style = xl.XFStyle(); header_style.font = header_font 
    for col,value in enumerate(headers): 
     mysheet.write(0,col,value,header_style) 
    #write values and highlight those that match my criteria 
    highlighted_row_font=xl.Font() #no real highlighting available? 
    highlighted_row_font.bold=True 
    highlighted_row_font.colour_index=2 #2 is red, 
    highlighted_row_style = xl.XFStyle(); highlighted_row_style.font = highlighted_row_font 
    for row_num,row_values in enumerate(values): 
     row_num+=1 #start at row 1 
     if row_values[1]=='Manatee': 
      for col,value in enumerate(row_values): 
       #make Manatee's (sp) red 
       mysheet.write(row_num,col,value,highlighted_row_style) 
     else: 
      for col,value in enumerate(row_values): 
       #normal row 
       mysheet.write(row_num,col,value) 
    #save file 
    mydoc.save(r'C:testpyexel.xlt') 

headers=['Date','Name','Localatity'] 
data=[ 
['June 11, 2006','Greg','San Jose'], 
['June 11, 2006','Greg','San Jose'], 
['June 11, 2006','Greg','San Jose'], 
['June 11, 2006','Greg','San Jose'], 
['June 11, 2006','Manatee','San Jose'], 
['June 11, 2006','Greg','San Jose'], 
['June 11, 2006','Manatee','San Jose'], 
] 

save_in_excel(headers,data) 
+0

merci pour la réponse .. mais ce code mettra en évidence l'ensemble du texte de la cellule, ou en d'autres termes, il appliquera le style à la cellule entière, tandis que je veux mettre en évidence seulement des mots spécifiques dans la cellule. – Ashish

Questions connexes