Sdílet prostřednictvím


Přístup k datům v dokumentech na serveru

Můžete programovat proti datům v přizpůsobení na úrovni dokumentu, aniž byste museli používat objektový model systém Microsoft Office Wordu nebo systém Microsoft Office Excelu. To znamená, že máte přístup k datům obsaženým v dokumentu na serveru, který nemá nainstalovaný Word nebo Excel. Například kód na serveru (například na stránce ASP.NET) může přizpůsobit data v dokumentu a odeslat přizpůsobený dokument koncovému uživateli. Když koncový uživatel dokument otevře, kód datové vazby v sestavení řešení vytvoří vazbu přizpůsobených dat do dokumentu. Je to možné, protože data v dokumentu jsou oddělená od uživatelského rozhraní. Další informace najdete v tématu Data uložená v mezipaměti v přizpůsobení na úrovni dokumentu.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu pro Excel a Word. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

Ukládání dat do mezipaměti pro použití na serveru

Pokud chcete datový objekt v dokumentu uložit do mezipaměti, označte ho CachedAttribute atributem v době návrhu nebo použijte StartCaching metodu položky hostitele za běhu. Při ukládání datového objektu do mezipaměti v dokumentu visual Studio Tools for Office runtime serializuje objekt do řetězce XML, který je uložen v dokumentu. Aby objekty měly nárok na ukládání do mezipaměti, musí splňovat určité požadavky. Další informace najdete v tématu Mezipaměť dat.

Kód na straně serveru může manipulovat s libovolnými datovými objekty v mezipaměti dat. Ovládací prvky vázané na instance dat uložených v mezipaměti se synchronizují s uživatelským rozhraním, aby se všechny změny na straně serveru provedené v datech automaticky zobrazovaly při otevření dokumentu v klientovi.

Přístup k datům v mezipaměti

K datům v mezipaměti můžete přistupovat z aplikací mimo Office, například z konzolové aplikace, model Windows Forms aplikace nebo webové stránky. Aplikace, která přistupuje k datům uloženým v mezipaměti, musí mít úplný vztah důvěryhodnosti; Webová aplikace, která má částečný vztah důvěryhodnosti, nemůže vložit, načíst nebo změnit data uložená v mezipaměti v dokumentu Office.

Mezipaměť dat je přístupná prostřednictvím hierarchie kolekcí, které jsou vystaveny CachedData vlastností ServerDocument třídy:

  • Tato CachedData vlastnost vrátí CachedDatahodnotu , která obsahuje všechna data uložená v mezipaměti v přizpůsobení na úrovni dokumentu.

  • Každý CachedData obsahuje jeden nebo více CachedDataHostItem objektů. A CachedDataHostItem obsahuje všechny datové objekty uložené v mezipaměti, které jsou definovány v rámci jedné třídy.

  • Každý CachedDataHostItem obsahuje jeden nebo více CachedDataItem objektů. A CachedDataItem představuje jeden datový objekt uložený v mezipaměti.

    Následující příklad kódu ukazuje, jak získat přístup k řetězci uložené v mezipaměti ve Sheet1 třídě projektu excelového sešitu. Tento příklad je součástí většího příkladu, který je k dispozici pro metodu Save .

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

Úprava dat v mezipaměti

Pokud chcete upravit datový objekt uložený v mezipaměti, obvykle provedete následující kroky:

  1. Deserializovat reprezentaci XML objektu v mezipaměti do nové instance objektu. K SOUBORU XML můžete přistupovat pomocí Xml vlastnosti CachedDataItem , která představuje datový objekt uložený v mezipaměti.

  2. Proveďte změny této kopie.

  3. Serializace změněného objektu zpět do mezipaměti dat pomocí jedné z následujících možností:

    • Pokud chcete automaticky serializovat změny, použijte metodu SerializeDataInstance . Tato metoda používá formát DiffGram pro serializaci DataSet, DataTablea typ datové sady objekty v mezipaměti dat. Formát DiffGram zajišťuje, aby se změny mezipaměti dat v offline dokumentu správně odesílaly na server.

    • Pokud chcete provést vlastní serializaci pro změny dat uložených v mezipaměti, můžete zapisovat přímo do Xml vlastnosti. Formát DiffGram zadejte, pokud použijete DataAdapter k aktualizaci databáze změny provedené v datech v DataSetdatové sadě nebo DataTablezadané datové sadě. DataAdapter Jinak databáze aktualizuje přidáním nových řádků místo úprav existujících řádků.

Úprava dat bez deserializace aktuální hodnoty

V některých případech můžete chtít upravit hodnotu objektu v mezipaměti bez první deserializace aktuální hodnoty. Můžete to provést například v případě, že měníte hodnotu objektu, který má jednoduchý typ, například řetězec nebo celé číslo, nebo pokud inicializujete mezipaměť DataSet v dokumentu na serveru. V těchto případech můžete použít metodu SerializeDataInstance bez první deserializace aktuální hodnoty objektu v mezipaměti.

Následující příklad kódu ukazuje, jak změnit hodnotu řetězce uloženého v mezipaměti ve Sheet1 třídě projektu excelového sešitu. Tento příklad je součástí většího příkladu, který je k dispozici pro metodu Save .

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();
}

Úprava hodnot null v mezipaměti dat

Mezipaměť dat neukládá objekty, které mají hodnotu null při uložení a zavření dokumentu. Toto omezení má několik důsledků při úpravě dat uložených v mezipaměti:

  • Pokud nastavíte jakýkoli objekt v mezipaměti dat na hodnotu null, všechny objekty v mezipaměti dat se při otevření dokumentu automaticky nastaví na hodnotu null a při uložení a zavření dokumentu se vymaže celá mezipaměť dat. To znamená, že všechny objekty uložené v mezipaměti budou odebrány z mezipaměti dat a CachedData kolekce bude prázdná.

  • Pokud vytvoříte řešení s objekty null v mezipaměti dat a chcete tyto objekty inicializovat pomocí ServerDocument třídy před prvním otevřením dokumentu, je nutné zajistit, abyste inicializovali všechny objekty v mezipaměti dat. Pokud inicializujete pouze některé objekty, všechny objekty budou při otevření dokumentu nastaveny na hodnotu null a při uložení a zavření dokumentu se vymaže celá mezipaměť dat.

Přístup k datovým sadám typu v mezipaměti

Pokud chcete získat přístup k datům v zadané datové sadě z řešení Office i z aplikace mimo Office, jako je model Windows Forms aplikace nebo projekt ASP.NET, je nutné definovat typovou datovou sadu v samostatném sestavení, na které se odkazuje v obou projektech. Pokud do každého projektu přidáte typovou datovou sadu pomocí průvodce konfigurací zdroje dat nebo Návrháře datových sad, rozhraní .NET Framework bude považovat typové datové sady v těchto dvou projektech za různé typy. Další informace o vytváření typových datových sad najdete v tématu Vytváření a konfigurace datových sad v sadě Visual Studio.