[英]Openpyxl get cell value (for cells with formula, no formula, or datetime)
我有一個電子表格,其中的單元格包含沒有公式的文本、有公式的單元格以及格式為datetime
的單元格。 我需要閱讀所有這三種情況的實際值。
將 Python 3 與 Openpyxl 3.0.3 一起使用。
目前,我有以下代碼。 使用data_only=True
,正如其他關於此類問題的 SO 帖子所建議的那樣。
workbook = load_workbook(r"path\to\my\spreadsheet.xlsx", data_only=True)
# select first available sheet
sheet = workbook.active
sheet.title
for value in sheet.iter_rows(min_row=2,
max_row=86,
min_col=1,
max_col=7,
values_only=True):
print(value)
生成的 output 的片段如下所示。 在此示例中,第一列很好。 第三列是日期格式的,但我需要單元格的實際值(因此它們將是 26/1/2020 和 27/1/2020)。 第五和第六列有公式,但我需要實際值。
(2, None, datetime.datetime(2020, 1, 26, 0, 0), None, '=SUM(D$3:D4)', '=E4/E3', None)
(3, None, datetime.datetime(2020, 1, 27, 0, 0), None, '=SUM(D$3:D5)', '=E5/E4', None)
第三列是日期格式,但我需要單元格的實際值(因此它們將是 26/1/2020 和 27/1/2020)
至於格式化有strfomart
python 中日期時間模塊的選項
from datetime import datetime
value[2].strformat("%d/%m/%Y)
print(sheet["a1"].value)
奇怪的是,它在你的 for 循環中返回了正確的 output 。
output
(1, 5, 6) (2, 7, 9) (3, 9, 12) (4, 11, 15)
我找到了以下評論(來源)
FWIW,如 openpyxl.load_workbook() 中所述,打開具有 data_only=True 的工作簿時獲得的值是“上次 Excel 讀取工作表時存儲的值”。 這依賴於 .xls[x/m/...] 文件的緩存功能(我在除 Microsoft 之外的任何地方都可以找到有關該文件的文檔)。 – 用戶948581
也許嘗試打開文件檢查公式是否正確計算(顯示為單元格中的值),然后保存文件並確保它已關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.