我正在使用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
从前面的高棉字符改为字体。
我要完成的工作是将文件的现有内容保持为原来的格式(样式和字体),同时向其中写入其他数据。
请告知我的脚本有什么问题,如何在执行上述脚本后如何保持现有样式和字体不变?谢谢。
根据此问题的答案,您可以使用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")
但是,根据文档,您只能将样式应用于整个单元,而不能应用于单元的一部分。因此,您需要将高棉语字符放在一个单元格中,并将英文字符放在另一个单元格中。
除了您想推荐我可以尝试作为替代解决方案的任何东西,例如可以实现上述结果的另一个软件包,库?非常感谢
抱歉,直到我看到你的帖子,我才听说过这个包裹。您可能想调查与Google Spreadsheets进行交互的API?
@Yvonne您可以在这里提供帮助stackoverflow.com/questions/59888367/…
我看了一下,但是那里的一个答案似乎很有道理。