Размер шрифта:
Доступ к данным в документах на сервере
Play

Доступ к данным в документах на сервере

вы можете программировать данные в настройке на уровне документа без использования объектной модели Microsoft Office Word или Microsoft Office Excel. это означает, что вы можете получить доступ к данным, содержащимся в документе на сервере, на котором не установлен Word или Excel. Например, код на сервере (например, на ASP.NET странице) может настраивать данные в документе и отсылать настроенный документ конечному пользователю. Когда конечный пользователь открывает документ, код привязки данных в сборке решения привязывает пользовательские данные к документу. Это возможно, поскольку данные в документе отделены от пользовательского интерфейса. Дополнительные сведения см. в разделе кэшированные данные в настройках уровня документа.

Применимость. Информация в этой статье относится к проектам уровня документа для Excel и Word.- Дополнительные сведения см. в разделе доступность функций по типам приложений Office и проектов.

Кэширование данных для использования на сервере

Чтобы кэшировать объект данных в документе, пометьте его CachedAttribute атрибутом во время разработки или используйте StartCaching метод ведущего элемента во время выполнения. При кэшировании объекта данных в документе Набор средств Visual Studio для Office (cреда выполнения) сериализует объект в XML-строку, которая хранится в документе. Объекты должны удовлетворять определенным требованиям для кэширования. Дополнительные сведения см. в разделе кэширование данных.

Код на стороне сервера может управлять любыми объектами данных в кэше данных. Элементы управления, привязанные к кэшированным экземплярам данных, синхронизируются с пользовательским интерфейсом, поэтому любые изменения на стороне сервера, внесенные в данные, отображаются автоматически при открытии документа на клиенте.

Доступ к данным в кэше

доступ к данным в кэше можно получить из приложений, находящихся за пределами Office, например из консольного приложения, Windows Forms приложения или веб-страницы. Приложение, обращающееся к кэшированным данным, должно иметь полное доверие. веб-приложение с частичным доверием не может вставлять, извлекать или изменять данные, кэшированные в Office документе.

Кэш данных доступен через иерархию коллекций, предоставляемых CachedData свойством ServerDocument класса:

CachedDataСвойство возвращает объект CachedData , который содержит все кэшированные данные в настройке на уровне документа.

Каждый CachedData содержит один или несколько объектов CachedDataHostItem. CachedDataHostItemСодержит все объекты кэшированных данных, определенные в одном классе.

Каждый CachedDataHostItem содержит один или несколько объектов CachedDataItem. CachedDataItemПредставляет один объект кэшированных данных.

в следующем примере кода показано, как получить доступ к кэшированной строке в Sheet1 классе Excel проекта книги. Этот пример является частью более крупного примера, предоставляемого для Save метода.

Изменение данных в кэше

Для изменения объекта кэшированных данных обычно выполняются следующие действия.

Десериализация XML-представления кэшированного объекта в новый экземпляр объекта. Доступ к XML можно получить с помощью Xml свойства CachedDataItem объекта, представляющего кэшированный объект данных.

Внесите изменения в эту копию.

Выполните сериализацию измененного объекта обратно в кэш данных с помощью одного из следующих параметров:

Если вы хотите автоматически сериализовать изменения, используйте SerializeDataInstance метод. Этот метод использует формат DiffGram для сериализации DataSet , DataTable и типизированных объектов DataSet в кэше данных. Формат DiffGram гарантирует, что изменения в кэше данных в автономном документе отправляются на сервер правильно.

Если вы хотите выполнить собственную сериализацию изменений в кэшированные данные, можно непосредственно выполнить запись в Xml свойство. Укажите формат DiffGram , если используется DataAdapter для обновления базы данных с изменениями, внесенными в данные в DataSet , DataTable или типизированном наборе данных. В противном случае DataAdapter будет обновлена база данных путем добавления новых строк вместо изменения существующих строк.

Изменение данных без десериализации текущего значения

В некоторых случаях может потребоваться изменить значение кэшированного объекта без предварительной десериализации текущего значения. Например, это можно сделать, если изменить значение объекта, имеющего простой тип, например строку или целое число, или инициализировать кэширование DataSet в документе на сервере. В таких случаях можно использовать SerializeDataInstance метод без предварительной десериализации текущего значения кэшированного объекта.

в следующем примере кода показано, как изменить значение кэшированной строки в Sheet1 классе Excel проекта книги. Этот пример является частью более крупного примера, предоставляемого для Save метода.

Изменение значений NULL в кэше данных

В кэше данных не хранятся объекты, имеющие значение null при сохранении и закрытии документа. Это ограничение имеет несколько последствий при изменении кэшированных данных.

Если для любого объекта в кэше данных задано значение null, все объекты в кэше данных будут автоматически установлены в значение null при открытии документа, а весь кэш данных будет очищаться при сохранении и закрытии документа. То есть все кэшированные объекты будут удалены из кэша данных, а CachedData коллекция будет пустой.

Если вы создаете решение с пустыми объектами в кэше данных и хотите инициализировать эти объекты с помощью ServerDocument класса до первого открытия документа, необходимо убедиться, что инициализируются все объекты в кэше данных. При инициализации только некоторых объектов все объекты будут установлены в значение NULL при открытии документа, а весь кэш данных будет очищаться при сохранении и закрытии документа.

📎📎📎📎📎📎📎📎📎📎