温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to keep style format unchanged after writing data using OpenPyXL package in Python?
python-2.7 openpyxl

其他 - 在Python中使用OpenPyXL包写入数据后,如何保持样式格式不变?

发布于 2020-04-04 00:26:22

我正在使用openpyxl库包来读取和写入一些数据到现有的excel文件test.xlsx

在向其中写入一些数据之前,文件的内容如下所示:

在此处输入图片说明

  • 单元格A1包含高棉Unicode字符,英语字符为粗体

  • 单元格A3使用了Lemons1字体,并且英文字符为斜体

我正在使用以下脚本来读取数据“ It is me”并将其写入此excel文件的单元格B2:

from openpyxl import load_workbook
import os
FILENAME1 = os.path.dirname(__file__)+'/test.xlsx'
from flask import make_response
from openpyxl.writer.excel import save_virtual_workbook
from app import app

@app.route('/testexel', methods=['GET'])
def testexel():
    with app.app_context():
        try:
            filename = 'test'
            workbook = load_workbook(FILENAME1, keep_links=False)
            sheet = workbook['Sheet1']
            sheet['B2']='It is me'

            response = make_response(save_virtual_workbook(workbook))
            response.headers['Cache-Control'] = 'no-cache'
            response.headers["Content-Disposition"] = "attachment; filename=%s.xlsx" % filename
            response.headers["Content-type"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8"

            return response

        except Exception as e:

            raise

然后将结果excel文件的格式修改为以下格式,我从不希望它像这样:

在此处输入图片说明

在向其写入数据之前,格式样式与原始文件有很大不同:

  • 单元格A1中的所有数据均采用英文字符的粗体显示

  • 单元格B3的英文字符成为一种常规样式,字体limons1从前面的高棉字符改为字体

我要完成的工作是将文件的现有内容保持为原来的格式(样式和字体),同时向其中写入其他数据。

请告知我的脚本有什么问题,如何在执行上述脚本后如何保持现有样式和字体不变?谢谢。

查看更多

提问者
Houy Narun
被浏览
813
Yvonne Aburrow 2018-11-21 03:52

根据此问题的答案,您可以使用openpyxl在Excel中设置单元格的格式。

此处给出的答案仅将目标单元格更改为粗体,但也许您可以将字体改lemons1

from openpyxl.workbook import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws['B3'] = "Hello"
ws['B3'].font =  Font(name='lemons1', size=14)
wb.save("FontDemo.xlsx")

但是,根据文档,您只能将样式应用于整个单元,而不能应用于单元的一部分。因此,您需要将高棉语字符放在一个单元格中,并将英文字符放在另一个单元格中。