Какие проблемы могут возникнуть при использовании приложений win32, которые обрабатывают 64-разрядные файлы Office 2010? - PullRequest
1 голос
/ 23 сентября 2010

Я тестирую одно приложение, которое обрабатывает файлы (хранящиеся на сервере sql с использованием файлового потока). Это Delphi Win32 приложение.

Открытие документа xls, хранящегося в БД (изначально сохраненного в Office 2003), приводит к ошибке в 64-разрядной версии Excel 2010.

Существуют ли известные проблемы совместимости с Office 2010 64bit с приложениями win32?

Я пытаюсь приблизиться к проблеме, но пока прошу помощи.

* Дополнительные примечания:

При открытии файла Excel выдает следующую ошибку «Невозможно открыть файл ФАЙЛ из-за проблем с содержимым» / «Невозможно открыть файл из-за того, что некоторые детали отсутствуют или недействительны».

Открытие файла с компьютера A в Office 2007 открывает файл без проблем.

Проблема при открытии того же файла на компьютере B в Office 2010.

Снова открывается из машины А, это создает проблему! На всех этих этапах я просто читаю из БД, а не пишу. Так почему же это может произойти? *

Дополнительное обновление: как открыть документы

Вот шаги, которые я использую: 1. Выберите Query, чтобы получить поле 'DOCUMENT' varbinary(max) для конкретного ID_Document.

  1. извлечение из Db с использованием TBlobField(sqlQuery.FieldByName('DOCUMENT')).SaveToFile(sDestinationPath + FileUniqueName + .zip');

  2. Копировать файл из одного пути в другой файл, используя Windows.CopyFile

  3. Распакуйте файл, используя TZipforge компонент

  4. Установить атрибут распакованного файла только для чтения с помощью функции FileSetReadOnly.

  5. открыть документ, используя

    ShellExecute (0, 'open', PWideChar (FIleName), '', '', SW_SHOWNORMAL);

Как вы видите, ничего не записывается обратно в БД. Когда файл извлекается из TBlobField, он даже копируется в другое место перед разархивированием и открытием.

ЗАКЛЮЧИТЕЛЬНОЕ ПРИМЕЧАНИЕ:

Office был переустановлен, и теперь все работает, проблема с коррупцией возникла из-за конфликта с установкой открытого офиса, который спросил: «Вы хотите исправить установку офиса?». В любом случае проблема все еще остается, потому что я не могу понять, что случилось. Как я могу испортить файл в БД, если я извлечу его в папку и открою из папки, ничего не записав обратно в БД?

Ответы [ 3 ]

1 голос
/ 23 сентября 2010

64-разрядная версия Office 2010 не должна иметь проблем с файлами, созданными в 32-разрядной версии. Файлы (.docx, .xls) не зависят от разрядности.

У меня есть несколько вопросов:

  1. Как вы открываете свои файлы?
  2. Можете показать код?
  3. Вы уверены, что читаете файл только из базы данных?
  4. Вы даете своим файлам правильное расширение? Сохранение .xls как .xlsx приведет к проблемам при открытии файла.
0 голосов
/ 24 сентября 2010

НАЙДЕНО !!!

Guess? Ошибка!

Произошла ошибка в логике, которая сохраняла статус документа и по ошибке несколько раз Is_File_Compressed, где установлено значение False, даже если это True.

Спасибо за поддержку.

0 голосов
/ 24 сентября 2010

Проверьте, не повреждена ли база данных вашего сервера SQL. Проверьте диск, где база данных на наличие ошибок. Переустановите SQL-сервер.

...