【问题标题】:Openpyxl number_format not modifying cell values derived from formulaOpenpyxl number_format 不修改从公式派生的单元格值
【发布时间】:2018-10-01 23:20:27
【问题描述】:

Openpyxl 的“number_format”不会修改从公式派生的单元格值,因为结果值是 Python 中的字符串类型。

对于读取轨迹信息的软件,我需要特定自定义格式的数据。

注意:我已经看到这里解决了同样的问题:https://bitbucket.org/openpyxl/openpyxl/issues/376/number-format-not-refreshing-cells

我同意最初的答案:问题是 excel 没有将公式产生的数据存储在其缓存中。数据存储为字符串。我只是不确定如何在 Openpyxl 读取数据后将数据从 String 更改为 int:

import csv
import openpyxl
from openpyxl.styles import Alignment

wb = openpyxl.Workbook()
ws = wb.active
wb.active
f = open(r"...\....\...\automated.csv")
reader = csv.reader(f, delimiter=',')

for row in reader:
    ws.append(row)
f.close()
wb.save(r"...\...\...\...\automated.xlsx")

sheet=wb.active
wb.guess_types = True
sheet['F1'] = '***** Time Start'
rowNumber = 2  # Start reading from row 3
for i, cellObj in enumerate(ws, 3):  # 3 is the starting row to write on
    rowNumber += 1
    cellObj = ws.cell(row=i, column=6)  # 6 is the column to start writing on
    cellObj.value = '=OFFSET(B6,E{0},0)'.format(str(rowNumber).format(i))
    cellObj.number_format = 'dd mmm yyyy hh:mm:ss.000 "UTCG"'
    if i == 25:
        break
ws = wb.active

wb.save(r"...\...\...\...\automated.xlsx")

我知道代码可以正常工作,因为存储为“0”的值已被代码完美修改(请参阅突出显示),因为它们不对该单元格使用任何公式:

注意:number_format 应用于所有单元格(我检查了每一行):

但由于单元格是一个字符串,它不会反映更改。

我对 Python 还很陌生,并试图将 cellObj.value 转换为 int,但这不起作用。

任何有关如何执行此操作的帮助或建议将不胜感激。在过去的 4 天里,我一直在研究 Stack Overflow,但没有看到任何解决此问题的方法。谢谢!

编辑:我正在使用最新版本的 openpyxl 2.5.3 并尝试了这个: openpyxl python - writing csv to excel gives 'number formatted as text' 但它不起作用 - 我所有的价值观都变成了零:

【问题讨论】:

    标签: python excel openpyxl


    【解决方案1】:

    您需要使用strptime 方法将字符串转换为日期时间对象。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2015-08-24
      • 2020-07-31
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多