Как можно безопасно игнорировать изменения, которые Excel вносит в файл .xls при его открытии и закрытии? - PullRequest
0 голосов
/ 22 января 2019

Я бы хотел проверить контрольную сумму файла Excel, чтобы определить изменения, но мне все равно, просто ли пользователь "посмотрел" на него или переместил текущую выбранную ячейку (которая, я считаю, также сохранена)

Как я могу замаскировать данные, чтобы исключить временную информацию (см. «Что мы узнали» ниже)?В случае, если мы проверили, что они находятся в одном и том же месте, но я не был уверен, было ли это совпадением или были строго определены смещения байтов.

Кто-нибудь знает, как рассчитать диапазоны байтов, которые я должен игнорировать внутри"Workbook" объект для правильной проверки контрольной суммы файла Excel?

Еще лучше, есть ли другой механизм для определения, если две таблицы Excel функционально идентичны?

Спасибо

Вотвещи, которые мы узнали до сих пор:

  • .xls файлы обновляются при открытии для целей блокировки файлов.
  • Имя пользователя сразу записывается в файл Excel.
  • Если файл закрывается без каких-либо дополнительных изменений, имя пользователя остается измененным (файл обновляется).
  • После закрытия Excel создает файл задним числом, чтобы он выглядел так, как будто он не былобновлено.(Например, Subversion не будет определять файл как обновленный и не позволит вам восстановить его)
  • Файл Excel представляет собой zip-файл
  • Файл "Workbook" внутри файла Excelобновляется с именем пользователя в верхней части при открытии.
  • В верхней части есть, по крайней мере, еще одно незначительное изменение

Остальная часть файла выглядит одинаково для каждого байта, включая смещение, поэтому пропускаются первые 100 или около тогобайты сработали бы для случая, который мы попробовали, но не очень приятно просто предполагать это.

...