Como: dados do Cache em um documento protegido por senha
Se você adicionar dados à cache de dados em um documento ou em uma pasta de trabalho que é protegida com uma senha, as alterações aos dados armazenados em cache não são salvas automaticamente.Você pode salvar alterações dos dados armazenados em cache substituindo dois métodos em seu projeto.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para os seguintes aplicativos: Excel 2013 e Excel 2010; Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
Cache em documentos do word
Para armazenar em cache os dados em uma palavra documento que são protegidas com uma senha
Em a classe de ThisDocument , marcar um campo ou propriedade pública a serem armazenados em cache.Para obter mais informações, consulte Cache de dados.
Substituir o método de DocumentBase.UnprotectDocument na classe de ThisDocument e remover a proteção do documento.
Quando o documento é salvo, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade ao unprotect o documento.Isso permite que as alterações aos dados armazenados em cache a ser salvos.
Substituir o método de DocumentBase.ProtectDocument na classe de ThisDocument e reaplique proteção para o documento.
Após o documento é salvo, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade para reaplicar proteção para o documento.
Exemplo
O exemplo de código a seguir demonstra como armazenar em cache os dados em um documento do word que é protegido por senha.Antes de remover o código no método da proteção DocumentBase.UnprotectDocument , salvará o valor atual de ProtectionType , para que o mesmo tipo de proteção pode ser reaplicado no método de DocumentBase.ProtectDocument .
<CachedAttribute()> _
Public CachedString As String = "This string is cached in the document."
Private protectionTypeValue As Word.WdProtectionType
Protected Overrides Sub UnprotectDocument()
If Me.ProtectionType <> Word.WdProtectionType.wdNoProtection Then
protectionTypeValue = Me.ProtectionType
Me.Unprotect(securelyStoredPassword)
End If
End Sub
Protected Overrides Sub ProtectDocument()
Me.Protect(protectionTypeValue, password:=securelyStoredPassword)
End Sub
[CachedAttribute]
public string CachedString = "This string is cached in the document.";
private Word.WdProtectionType protectionTypeValue;
protected override void UnprotectDocument()
{
if (this.ProtectionType != Word.WdProtectionType.wdNoProtection)
{
protectionTypeValue = this.ProtectionType;
this.Unprotect(ref securelyStoredPassword);
}
}
protected override void ProtectDocument()
{
this.Protect(protectionTypeValue, ref missing,
ref securelyStoredPassword, ref missing, ref missing);
}
Compilando o código
Adicione este código para a classe de ThisDocument em seu projeto.Este código presume que a senha seja armazenada em um campo denominado securelyStoredPassword.
Cache nas pastas de trabalho do Excel
Em projetos do excel, este procedimento é necessário somente quando você proteja a pasta de trabalho inteiro com uma senha usando o método de Workbook.Protect .Esse procedimento não é necessário se você só assegure uma planilha específica com uma senha usando o método de Worksheet.Protect .
Para armazenar em cache os dados em uma pasta de trabalho do Excel que é protegida com uma senha
Em a classe de ThisWorkbook ou na as classes de Sheetem , marcar um campo ou propriedade pública a serem armazenados em cache.Para obter mais informações, consulte Cache de dados.
Substituir o método de WorkbookBase.UnprotectDocument na classe de ThisWorkbook e remover a proteção de pasta de trabalho.
Quando a pasta de trabalho é salva, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade ao unprotect a pasta de trabalho.Isso permite que as alterações aos dados armazenados em cache a ser salvos.
Substituir o método de WorkbookBase.ProtectDocument na classe de ThisWorkbook e reaplique proteção para o documento.
Após a pasta de trabalho é salva, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade para reaplicar proteção para a pasta de trabalho.
Exemplo
O exemplo de código a seguir demonstra como armazenar em cache os dados em uma pasta de trabalho do Excel que é protegida com uma senha.Antes de remover o código no método da proteção WorkbookBase.UnprotectDocument , salva ProtectStructure e os valores atuais de ProtectWindows , para que o mesmo tipo de proteção pode ser reaplicado no método de WorkbookBase.ProtectDocument .
<CachedAttribute()> _
Public CachedString As String = "This string is cached in the workbook."
Private protectStructureValue As Boolean
Private protectWindowsValue As Boolean
Protected Overrides Sub UnprotectDocument()
protectStructureValue = Me.ProtectStructure
protectWindowsValue = Me.ProtectWindows
Me.Unprotect(securelyStoredPassword)
End Sub
Protected Overrides Sub ProtectDocument()
Me.Protect(securelyStoredPassword, protectStructureValue, _
protectWindowsValue)
End Sub
[CachedAttribute]
public string CachedString = "This string is cached in the workbook.";
private bool protectStructureValue;
private bool protectWindowsValue;
protected override void UnprotectDocument()
{
protectStructureValue = this.ProtectStructure;
protectWindowsValue = this.ProtectWindows;
this.Unprotect(securelyStoredPassword);
}
protected override void ProtectDocument()
{
this.Protect(securelyStoredPassword, protectStructureValue,
protectWindowsValue);
}
Compilando o código
Adicione este código para a classe de ThisWorkbook em seu projeto.Este código presume que a senha seja armazenada em um campo denominado securelyStoredPassword.
Consulte também
Tarefas
Como: os dados em Cache para uso off-line ou em um servidor
Como: armazenar em Cache programaticamente uma fonte de dados em um documento do Office