Редактирование Python Excel с датой изменения openpyxel в другой ячейке - PullRequest
0 голосов
/ 30 апреля 2019

При загрузке уже существующего файла Excel с openpyxl, изменении значения в ячейке и сохранении файла также изменяется другое значение (дата).Кажется, я не могу найти причину / ошибку за этим странным поведением.

Это мой файл Excel dates.xlsx:

Title   Date
Date1   01.01.1900
Date2   02.01.1900
Date3   03.01.1900

Вот так я изменяю значение ячейкии сохраните изменения:

from openpyxl import load_workbook

fileName = "./dates.xlsx"
wb = load_workbook(filename=fileName)
sheet = wb.active
sheet.cell(row=4, column=3).value = "new value"
wb.save(fileName)
wb.close()

Ожидаемый результат:

Title   Date
Date1   01.01.1900
Date2   02.01.1900
Date3   03.01.1900   new value

Фактический результат:

Title   Date
Date1   00.01.1900
Date2   02.01.1900
Date3   03.01.1900   new value

Это происходит только с датами.Есть идеи как с этим бороться?

1 Ответ

1 голос
/ 01 мая 2019

Проблема на самом деле связана со спецификацией дат в OOXML и некоторыми ошибками в OOXML.Чтобы обойти это, вы можете установить iso_dates=True при сохранении книги.Это как минимум сохранит однозначное представление в XML.Что из этого делают другие приложения (Excel считает, что серийный номер 0 - это 0 января 1900 года) - это другой вопрос.По сути, формат файла совсем не подходит для исторических дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...