繁体   English   中英

如何将 Python 中的 openpyxl 创建的 Excel 工作表中的单元格设为“可格式化”?

[英]How can cells in Excel worksheets created by openpyxl in Python be made 'formattable'?

我正在尝试使用 openpyxl 库(请参阅https://openpyxl.readthedocs.io/ )来创建一些基本的 Excel 类型文件,以在 Excel 和 Planmaker(来自 Softmaker FreeOffice 2018)中使用。 我使用的代码与 openpyxl 库网站上显示的代码基本相同,即:-

from openpyxl import Workbook
import csv

Excel_file = "Test.xlsx"
csv_file   = "test.csv"

# ----

wb = Workbook()
ws = wb.active

with open(csv_file, 'r') as fp:
   for row in csv.reader(fp):
      ws.append(row)  # This creates cells that aren't numbers OR formattable?
# endfile

wb.save(Excel_file)

exit(0)         

...和 ​​.csv 文件是:-

Fruit,Quantity
Apples,222.09
Oranges,1032.12
Bananas,14.12

此代码创建的文件是好的...但数字单元格的格式为“默认”(它们显示为左对齐,而不是右对齐,就像数字字段一样)并且似乎无法以任何特定方式格式化. 内容为“默认”对齐等。如果我将单元格设置为“居中”,则单元格的显示将更改为数字文本居中; 但是,如果我然后尝试分配“数字”格式(例如,带有 2 个小数位并使用逗号表示千位),则显示不会更新为小数位或千位分隔符,并且显示的文本变为左对齐,就像在我将其更改为“Centred”之前一样。

我不确定问题是出在 Python、库还是 Planmaker 应用程序上(我目前无法访问 Excel),因此我不确定去哪里查看解决问题的方法。 我没有使用“pandas”或其他此类工具,因为我只处理少量数据,并且我希望尽可能保持 Python 代码的小和“轻量级”。

我正在使用 Python 3.7.0(几个月前从 python.org 收集,为所有人安装——也就是说,不是“用户”安装)、Windows 8.1 32 位、openpyxl 3.0.2 和 FreeOffice Planmaker 2018 Rev 973.1103 32 位。

Python/openpyxl 创建的“test.xlsx”文件示例位于: http : //www.filedropper.com/test_20160

我很感激任何关于可能出现问题的想法。

谢谢。

我试图在 Excel 中打开一个文件 - 是的,格式是默认的:

在此处输入图片说明

您需要更改数字单元格的单元格样式或在追加之前将值转换为所需的 python 类型。

with open(csv_file, 'r') as fp:
    reader = csv.reader(fp)
    header = next(reader)
    ws.append(header)

    for row in reader:
        ws.append((row[0], float(row[1])))

或者,或者(有关更多详细信息,请参阅文档):

for row in range(2, rows_num):
    ws["B{}".format(row)].value = float(ws["B{}".format(row)].value)
    ws["B{}".format(row)].number_format = '#,##0.00'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM