Используйте openpyxl для редактирования файла Excel2007 (.xlsx) без изменения его собственных стилей?

У меня есть файл.xlsx для редактирования, я обнаружил, что openpyxl может манипулировать файлами Excel 2007. Я только хочу изменить значение в некоторых ячейках и оставить другие настройки без изменений.

Но после того, как я просмотрел документацию, я не могу найти примеры для редактирования существующего файла. Это только продемонстрировало чтение файла.xlsx и запись в новый.

Ниже я попытался отредактировать существующий файл, но после его сохранения стили в файле были удалены (например, шрифты, цвета):

from openpyxl.reader.excel import load_workbook
wb=load_workbook(r'd:\foo1.xlsx')
ws=wb.get_sheet_by_name('Bar')
ws.cell('A1').value= 'new_value'
# save the workbook to a new file to finish the editing
# but the style settings has been removed (such like font, color) in the new file
wb.save(r'd:\foo2.xlsx')

3 ответа

Решение

Теперь openpyxl не может обрабатывать стили достаточно хорошо, поэтому я попытался использовать pywin32 COM и получил решение. Вот хорошая ht tp://pythonexcels.com/blog/python-excel-mini-cookbook/ для использования pywin32 COM для Excel

Стили еще не полностью поддерживаются в openpyxl. Убедитесь, что вы используете последнюю версию (на данный момент 1.5.3), так как она недавно улучшила свои стилистические возможности.

Xlwt имеет более полное форматирование для файлов.xls, но пока не поддерживает xlsx.

Попробуйте следующий код, создавая экземпляр следующего класса:

из openpyxl import load_workbook

Класс для управления данными Excel с openpyxl

class Copy_excel:
def __init__(self,src):
    self.wb = load_workbook(src)
    self.ws = self.wb.get_sheet_by_name("Sheet1")
    self.dest="destination.xlsx"

#Write the value in the cell defined by row_dest+column_dest         
def write_workbook(self,row_dest,column_dest,value):
    c = self.ws.cell(row = row_dest, column = column_dest)
    c.value = value

#Save excel file
def save_excel(self) :  
    self.wb.save(self.dest)

Никогда не сдавайся!!!

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