I am using
pyexcelerator Python module to generate Excel files.
I want to apply bold style to part of cell text, but not to the whole cell.
How to do it?
How to apply bold style to a specific word in Excel file using Python?
I am using
This is an example from Excel documentation:
With Worksheets("Sheet1").Range("B1") .Value = "New Title" .Characters(5, 5).Font.Bold = True End With
So the Characters property of the cell you want to manipulate is the answer to your question. It's used as Characters(start, length).
PS: I've never used the module in question, but I've used Excel COM automation in python scripts. The Characters property is available using win32com.
Found example here: Generate an Excel Formatted File Right in Python
Notice that you make a font object and then give it to a style object, and then provide that style object when writing to the sheet:
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=='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)
The principle purpose of MEF is extensibility; to serve as a 'plug-in' framework for when the author of the application and the author of the plug-in (extension) are different and have no particular knowledge of each other beyond a published interface (contract) library.
Another problem space MEF addresses that's different from the usual IoC suspects, and one of MEFs strengths, is [extension] discovery. It has a lot of, well, extensible discovery mechanisms that operate on metadata you can associate with extensions. From the MEF CodePlex site:
"MEF allows tagging extensions with additonal metadata which facilitates rich querying and filtering"
Combined with an ability to delay-load tagged extensions, being able to interrogate extension metadata prior to loading opens the door to a slew of interesting scenarios and substantially enables capabilities such as [plug-in] versioning.
MEF also has 'Contract Adapters' which allow extensions to be 'adapted' or 'transformed' (from type > to type) with complete control over the details of those transforms. Contract Adapters open up another creative front relative to just what 'discovery' means and entails.
Again, MEFs 'intent' is tightly focused on anonymous plug-in extensibility, something that very much differentiates it from other IoC containers. So while MEF can be used for composition, that's merely a small intersection of its capabilities relative to other IoCs, with which I suspect we'll be seeing a lot of incestuous interplay going forward.