ServerDocument 類別 (2003 系統)
提供 Microsoft Office Word 文件或 Microsoft Office Excel 活頁簿中已快取之資料和應用程式資訊清單的存取。
命名空間: Microsoft.VisualStudio.Tools.Applications.Runtime
組件: Microsoft.VisualStudio.Tools.Applications.Runtime (在 Microsoft.VisualStudio.Tools.Applications.Runtime.dll 中)
語法
'宣告
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public NotInheritable Class ServerDocument _
Implements IDisposable
'用途
Dim instance As ServerDocument
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public sealed class ServerDocument : IDisposable
備註
ServerDocument 類別有兩個主要用途:
可讓您存取文件中的快取資料和應用程式資訊清單,而不需要啟動 Word 或 Excel。
可讓您以程式設計方式附加或移除自訂組件。
若要存取文件中的快取資料或應用程式資訊清單,首先必須將該文件傳遞給其中一個 ServerDocument 建構函式,以建立 ServerDocument 物件。您可以接著使用 CachedData 屬性存取快取資料,並使用 AppManifest 屬性存取應用程式資訊清單。應用程式資訊清單會提供附加至文件之自訂組件的相關資訊。如需詳細資訊,請參閱 Office 方案中的應用程式和部署資訊清單。
若要加入或移除自訂,請使用靜態 AddCustomization 和 RemoveCustomization 方法。當文件不在開發電腦上,而您想要加入或移除自訂時,這些方法十分有用。由於這些方法會啟動 Word 和 Excel 以加入或移除自訂,因此只有在電腦已安裝 Word 或 Excel 時,您才可以呼叫這些方法。
選擇要使用的建構函式
有兩組 ServerDocument 建構函式:
一組可用來存取已在記憶體中開啟的文件。
一組可用來存取磁碟上的文件。
存取記憶體中的文件
若要存取已在記憶體中開啟的文件,請使用下列其中一個建構函式:
這些建構函式可接受表示記憶體中之文件的位元組陣列或 Stream。如果您要修改文件中的快取資料或應用程式資訊清單,然後再使用 HTTP 通訊協定將文件資料流處理至目的端,後者會相當實用。若要使用這些建構函式,文件必須已經有 Visual Studio Tools for Office 自訂,否則建構函式會擲回 CannotLoadManifestException 例外狀況。
存取磁碟上的文件
若要存取磁碟上的文件,請使用下列其中一個建構函式:
這些建構函式可接受要開啟之文件的完整路徑。文件必須已經有 Visual Studio Tools for Office 自訂。
根據預設,文件是利用讀取/寫入存取權開啟的。如果您要以唯讀或唯寫存取權開啟文件,請使用具有 FileAccess 參數的建構函式。
如果您想要開啟尚未有 Visual Studio Tools for Office 自訂的文件,請使用具有布林值 onClient 參數的建構函式。如果您將這個參數設定為 true,Visual Studio Tools for Office 執行階段就會在文件中建立空的 Runtime Storage Control。如果您想要將快取資料加入至還沒有自訂的文件,這會非常有用。由於 Visual Studio Tools for Office 執行階段會啟動 Word 或 Excel 以建立 Runtime Storage Control,因此用戶端電腦必須已安裝 Word 或 Excel,您才可以呼叫 ServerDocument 建構函式。如需 Runtime Storage Control 的詳細資訊,請參閱 Runtime Storage Control 概觀。
範例
下列程式碼範例會建立新的 ServerDocument,載入指定的文件,然後顯示文件資料快取中所有物件的名稱。這個範例需要 Microsoft.VisualStudio.Tools.Applications.Runtime.dll 組件的參考,所以請在您程式碼檔案的頂端以 Imports (適用於 Visual Basic) 或 using (適用於 C#) 陳述式,加入 Microsoft.VisualStudio.Tools.Applications.Runtime 命名空間。
Private Sub CreateServerDocumentOnClient(ByVal fileName As String)
If ServerDocument.IsCustomized(fileName) Then
Dim serverDocument1 As ServerDocument = Nothing
Try
serverDocument1 = New ServerDocument(fileName, True)
Dim stringBuilder1 As New System.Text.StringBuilder()
' Display all of the cached data items
' in the document.
Dim hostItem1 As CachedDataHostItem
For Each hostItem1 In serverDocument1.CachedData.HostItems
stringBuilder1.Append(vbLf + "Namespace and class: ")
stringBuilder1.Append(hostItem1.Id + vbLf)
Dim dataItem1 As CachedDataItem
For Each dataItem1 In hostItem1.CachedData
stringBuilder1.Append(" Data item: ")
stringBuilder1.Append(dataItem1.Id + vbLf)
Next dataItem1
Next hostItem1
MsgBox(stringBuilder1.ToString())
Finally
If Not serverDocument1 Is Nothing Then
serverDocument1.Close()
End If
End Try
Else
MsgBox("The specified document is not " + _
"customized.")
End If
End Sub
private void CreateServerDocumentOnClient(string fileName)
{
if (ServerDocument.IsCustomized(fileName))
{
ServerDocument serverDocument1 = null;
try
{
serverDocument1 = new ServerDocument(fileName,
true);
System.Text.StringBuilder stringBuilder1 =
new System.Text.StringBuilder();
// Display all of the cached data items
// in the document.
foreach (CachedDataHostItem hostItem1 in
serverDocument1.CachedData.HostItems)
{
stringBuilder1.Append("\nNamespace and class: ");
stringBuilder1.Append(hostItem1.Id + "\n");
foreach (CachedDataItem dataItem1 in
hostItem1.CachedData)
{
stringBuilder1.Append(" Data item: ");
stringBuilder1.Append(dataItem1.Id + "\n");
}
}
MessageBox.Show(stringBuilder1.ToString());
}
finally
{
if (serverDocument1 != null)
serverDocument1.Close();
}
}
else
{
MessageBox.Show("The specified document is not " +
"customized.");
}
}
繼承階層架構
System. . :: .Object
Microsoft.VisualStudio.Tools.Applications.Runtime..::.ServerDocument
執行緒安全
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。
請參閱
參考
Microsoft.VisualStudio.Tools.Applications.Runtime 命名空間