Как применить жирный шрифт к определенному слову в файле Excel с помощью Python?

Я использую модуль Python pyexcelerator для создания файлов Excel. Я хочу применить полужирный шрифт к части текста ячейки, но не ко всей ячейке. Как это сделать?

Можете ли вы понять это, создав такой файл в Excel, а затем прочитав его с помощью pyexcelerator?

John Fouhy 06.10.2008 07:17

pyexcelerator уже давно вытеснен xlwt. Последние версии xlwt поддерживают форматированный текст, продемонстрированный в этот вопрос. Для создания файлов Excel 2007+ (.xlsx) лучше всего подходит xlsxwriter, который также поддерживает форматированный текст.

John Y 18.12.2013 02:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
2
6 444
3

Ответы 3

Это пример из документации Excel:

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

Итак, свойство Characters ячейки, которой вы хотите манипулировать, является ответом на ваш вопрос. Используется как Персонажи (Начните, длина).

PS: Я никогда не использовал данный модуль, но я использовал автоматизацию Excel COM в скриптах Python. Свойство Characters доступно с помощью win32com.

Спасибо за ответ, я действительно хочу знать, возможно ли это с использованием языка python, excel точно поддерживает его, но я не смог найти способ сделать это с помощью python.

Ashish 20.09.2008 22:51

Я не смогу использовать его, так как использую ubuntu, то, что я искал, может быть какой-то аккуратный взлом в модуле pyexcelerrator, потому что он возвращает данные записи biff и другие записи, применимые к ячейке. в любом случае я дам это попытка, если я могу выставить его как веб-службу.

Ashish 21.09.2008 12:04

Нашел здесь пример: Создание файла в формате Excel прямо на Python

Обратите внимание, что вы создаете объект шрифта, а затем передаете его объекту стиля, а затем предоставляете этот объект стиля при записи на лист:

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)

спасибо за ответ .. но этот код выделит весь текст ячейки, или, другими словами, он применит стиль ко всей ячейке, в то время как я хочу выделить только определенные слова в ячейке.

Ashish 21.09.2008 11:54

Вот одно решение, которое я использовал для той же проблемы.

    import xlsxwriter
    workbook = xlsxwriter.Workbook(r'C:\workspace\NMSAutomation_001\FMGGUIAutomation\Libraries\Frontend\new_STICKERS_Final.xlsx')
####### two different formats
    bold   = workbook.add_format({'font_name':'Tahoma', 'bold': True, 'font_size':14})
    normal = workbook.add_format({'font_name':'Tahoma', 'font_size':11})

######## value is my string, bold and normal are my two different formats
    segments = [bold, value[:9], normal, value[9:]]
    worksheet.write_rich_string('A1', *segments) # 'A1' is cell position
    workbook.close()

Другие вопросы по теме