Udostępnij za pośrednictwem


Uzyskiwanie dostępu do danych w dokumentach na serwerze

Można zaprogramować przeciwko danych dostosowywania poziomie dokumentu, bez konieczności korzystania z modelu obiektów programu Microsoft Office Word lub Microsoft Office Excel.Oznacza to, że można uzyskać dostęp do danych zawartych w dokumencie, na serwerze, na którym nie ma programu Word lub Excel zainstalowane.Na przykład kod na serwerze (na przykład, w ASP.NET strony) można dostosować dane w dokumencie i wysłać dokument dostosowany do użytkownika końcowego.Gdy użytkownik otwiera dokument, kod powiązania danych w zestawie rozwiązanie wiąże dostosowane dane do dokumentu.Jest to możliwe, ponieważ dane w dokumencie jest oddzielona od interfejsu użytkownika.Aby uzyskać więcej informacji, zobacz Dane z pamięci podręcznej dostosowywane na poziomie dokumentu.

Zastosowanie: Informacje przedstawione w tym temacie mają zastosowanie do projektów na poziomie dokumentu dla następujących aplikacji: Excel 2013 i Excel 2010; Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacjach pakietu Office i typ projektu.

Buforowanie danych do użycia na serwerze

W pamięci podręcznej obiektu danych w dokumencie, należy oznaczyć go z CachedAttribute atrybut w czasie projektowania lub za pomocą StartCaching metoda elementu hosta w czasie wykonywania.Podczas buforowania danych obiekt w dokumencie, Visual Studio Tools for Office Runtime serializes obiektu do ciągu XML przechowywanym w dokumencie.Obiekty musi spełniać określone wymagania, aby kwalifikować się do buforowania.Aby uzyskać więcej informacji, zobacz Buforowanie danych.

Kod po stronie serwera można manipulować wszelkich obiektów danych w pamięci podręcznej danych.Formanty, które są związane z wystąpień buforowanych danych są synchronizowane z interfejsem użytkownika tak, aby zmiany po stronie serwera, które są wprowadzone w danych pojawi się automatycznie po otwarciu dokumentu na komputerze klienckim.

Uzyskiwanie dostępu do danych w pamięci podręcznej

Można uzyskać dostęp do danych w pamięci podręcznej z aplikacji spoza pakietu Office, na przykład z aplikacji konsoli, aplikacja Windows Forms lub strony sieci Web.Aplikacja, która uzyskuje dostęp do pamięci podręcznej danych musi mieć pełne zaufanie; aplikacji sieci Web, która ma częściowej relacji zaufania nie można wstawić, pobierania lub zmienić dane buforowane w dokumencie pakietu Office.

Pamięć podręczna danych jest dostępny za pośrednictwem hierarchii kolekcje, są udostępniane przez CachedData właściwość ServerDocument klasy:

Poniższy przykład kodu demonstruje, jak dostęp do pamięci podręcznej ciąg w Sheet1 klasy projektu skoroszytu programu Excel.W tym przykładzie jest częścią większej przykład, że dla ServerDocument.Save metoda.

serverDocument1 = New ServerDocument(documentPath)
Dim hostItem1 As CachedDataHostItem = _
    serverDocument1.CachedData.HostItems("ExcelWorkbook1.Sheet1")
Dim dataItem1 As CachedDataItem = hostItem1.CachedData("CachedString")
serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

Modyfikowanie danych w pamięci podręcznej

Aby zmodyfikować obiekt pamięci podręcznej danych, zazwyczaj należy wykonać następujące kroki:

  1. Deserializacji reprezentacji XML obiektu w pamięci podręcznej do nowego wystąpienia obiektu.Plik XML można uzyskać dostęp za pomocą Xml właściwość CachedDataItem która reprezentuje obiekt pamięci podręcznej danych.

  2. Wprowadź zmiany do tej kopii.

  3. Serializować zmieniony obiekt do pamięci podręcznej danych przy użyciu jednej z następujących opcji:

    • Aby automatycznie serializować zmiany, należy użyć SerializeDataInstance metoda.Metoda ta wykorzystuje DiffGram format dla szeregowania DataSet, DataTablei wpisany obiektów dataset w pamięci podręcznej danych.DiffGram Format zapewnia, że zmiany w pamięci podręcznej danych w trybie offline dokumentu są prawidłowo wysyłane do serwera.

    • Jeśli chcesz wykonać serializacji własne zmiany pamięci podręcznej danych, można pisać bezpośrednio na Xml właściwość.Określ DiffGram format, jeśli używasz DataAdapter do aktualizacji bazy danych, zmiany wprowadzone do danych w DataSet, DataTable, lub wpisany zestawu danych.W przeciwnym razie DataAdapter będzie zaktualizować bazy danych przez dodanie nowych wierszy zamiast modyfikować istniejące wiersze.

Modyfikowanie danych bez deserializacji bieżącej wartości

W niektórych przypadkach można zmodyfikować wartość obiektu w pamięci podręcznej bez pierwszego deserializacji bieżącą wartość.Na przykład, można to zrobić w przypadku zmiany wartości obiektu, który ma prosty typ, na przykład ciąg lub liczba całkowita, lub jeśli inicjowania są buforowane DataSet w dokumencie na serwerze.W takich przypadkach można użyć SerializeDataInstance metoda bez pierwszego deserializacji bieżącą wartość obiektu w pamięci podręcznej.

Poniższy przykład kodu pokazuje, jak zmienić wartość ciągu buforowany w Sheet1 klasy projektu skoroszytu programu Excel.W tym przykładzie jest częścią większej przykład, że dla ServerDocument.Save metoda.

serverDocument1 = New ServerDocument(documentPath)
Dim hostItem1 As CachedDataHostItem = _
    serverDocument1.CachedData.HostItems("ExcelWorkbook1.Sheet1")
Dim dataItem1 As CachedDataItem = hostItem1.CachedData("CachedString")

If dataItem1 IsNot Nothing AndAlso _
    Type.GetType(dataItem1.DataType).Equals(GetType(String)) Then

    dataItem1.SerializeDataInstance("This is the new cached string value.")
    serverDocument1.Save()
End If
serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

if (dataItem1 != null &&
    Type.GetType(dataItem1.DataType) == typeof(string))
{
    dataItem1.SerializeDataInstance("This is the new cached string value.");
    serverDocument1.Save();
}

Modyfikowanie wartości Null w pamięci podręcznej danych

Pamięć podręczna danych nie przechowuje obiekty, które mają wartość null po zapisaniu i zamknięciu dokumentu.Ograniczenie to ma kilka konsekwencje po zmodyfikowaniu danych w pamięci podręcznej:

  • Jeśli zestaw dowolnego obiektu w pamięci podręcznej danych na wartość null, wszystkich obiektów w pamięci podręcznej danych będzie automatycznie ustawiona null gdy dokument jest otwarty i będzie można wyczyścić pamięci podręcznej danych, po zapisaniu i zamknięciu dokumentu.Oznacza to, że wszystkie buforowane obiekty zostaną usunięte z pamięci podręcznej danych i CachedData kolekcja jest pusta.

  • Jeśli rozwiązanie z null obiektów w pamięci podręcznej danych, a chcesz zainicjować tych obiektów za pomocą ServerDocument klasy przed dokument jest otwierany po raz pierwszy, należy się upewnić, zainicjować wszystkich obiektów w pamięci podręcznej danych.Jeśli zainicjować niektórych obiektów, wszystkie obiekty zostaną nadane null gdy dokument jest otwarty i będzie można wyczyścić pamięci podręcznej danych, po zapisaniu i zamknięciu dokumentu.

Uzyskiwanie dostępu do zestawów wpisywanych danych w pamięci podręcznej

Jeśli chcesz uzyskać dostęp do danych zestawu danych wpisywanych zarówno z rozwiązanie Office i aplikacji poza pakietem Office, takich jak aplikacja Windows Forms lub ASP.NET projektu, należy zdefiniować zestawie danych wpisywanych w oddzielnych zestawów, do którego odwołują się w obu projektach.Jeśli możesz dodać do każdego projektu wpisywanych zestawu danych przy użyciu Kreatora konfiguracji źródła danych lub Zestawu danych, Projektant,.NET Framework będzie traktować wpisywanych zestawów danych w dwóch projektów jako różnych typów.Aby uzyskać więcej informacji o tworzeniu zestawów danych wpisywanych, zobacz Porady: tworzenie typizowanego zestaw danych.

Zobacz też

Koncepcje

Uzyskiwanie dostępu do danych w dokumentach na serwerze

Dane z pamięci podręcznej dostosowywane na poziomie dokumentu