Como: Inserir dados em documentos sem gravação em disco
Se aplica a |
---|
As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office. Tipo de Projeto
Versão do Microsoft Office
For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto. |
Você pode inserir dados em um documento de solução Ferramentas do Visual Studio para o Office na memória, para que os dados não são gravados no disco.Se você precisar enviar um documento a um usuário como uma matriz de bytes usando o protocolo HTTP, você pode usar esse recurso para modificar os dados diretamente na matriz byte, em vez de criar um arquivo temporário modificar os dados.
Para inserir dados em um documento
Carregar o documento na memória como uma matriz de bytes.
Dim name As String = "C:\Documents\WordApplication3.doc" Dim fileStream As System.IO.FileStream = Nothing Dim bytes() As Byte = Nothing Try fileStream = New System.IO.FileStream( _ name, System.IO.FileMode.Open, System.IO.FileAccess.Read) ReDim bytes(fileStream.Length) fileStream.Read(bytes, 0, fileStream.Length) Finally If Not fileStream Is Nothing Then fileStream.Close() End If End Try
string name = @"C:\Documents\WordApplication3.doc"; System.IO.FileStream fileStream = null; byte[] bytes = null; try { fileStream = new System.IO.FileStream( name, System.IO.FileMode.Open, System.IO.FileAccess.Read); bytes = new byte[(int)fileStream.Length]; fileStream.Read(bytes, 0, (int)fileStream.Length); } finally { if (fileStream != null) { fileStream.Close(); } }
Passar a matriz de bytes para o modelo de objeto do lado do servidor em vez de um Nome do Arquivo e, em seguida, executar a sua manipulação de dados.
Dim sd1 As ServerDocument = Nothing Try sd1 = New ServerDocument(bytes, name) ' Your data manipulation code goes here. sd1.Save()
ServerDocument sd1 = null; try { sd1 = new ServerDocument(bytes, name); // Your data manipulation code goes here. sd1.Save();
Enviar o documento para o usuário final e fechar o ServerDocument.
' If you have a Word document, use the MIME string: Response.ContentType = "application/msword" ' If you have an Excel workbook, use the MIME string: 'Response.ContentType = "application/vnd.ms-excel" Response.AddHeader("Content-disposition", "filename=" + name) Response.BinaryWrite(sd1.Document) Finally If Not sd1 Is Nothing Then sd1.Close() End If End Try
// If you have a Word document, use the MIME string: Response.ContentType = "application/msword"; // If you have an Excel workbook, use the MIME string: //Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-disposition", "filename=" + name); Response.BinaryWrite(sd1.Document); } finally { if (sd1 != null) { sd1.Close(); } }
Compilando o código
Este exemplo requer:
Um projeto ASP.NET que contém o código de exemplo.
Um documento do Microsoft Office Word chamado WordApplication3.doc que tem um cache de dados e está localizado na pasta C:\Documents.
Configuração backup o projeto do ASP.NET
O projeto ASP.NET deve ter uma referência a um dos seguintes assemblies:
Para o Word 2007, Adicionar uma referência a Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll.
Para o Word 2003, Adicionar uma referência a Microsoft.VisualStudio.Tools.Applications.Tempo de execução.dll.
O arquivo de código para o qual você copiar o exemplo de código deve ter um Imports (no Visual Basic) ou instrução de using (em C#) para um dos namespaces a seguir:
Para o Word 2007, Adicionar um Imports ou using instrução no namespace Microsoft.VisualStudio.Tools.Applications.
Para o Word 2003, Adicionar um Imports ou using instrução no namespace Microsoft.VisualStudio.Tools.Applications.Runtime.
Observação: Ferramentas do Visual Studio para o Office fornece versões diferentes da classe de ServerDocument e as classes de dados armazenados em cache para o sistema de 2007 e o sistema de 2003.For more information, see Gerenciando documentos em um servidor usando a classe do ServerDocument.
Consulte também
Tarefas
Como: Inserir dados em uma pasta de trabalho em um servidor
Como: Recuperar dados de uma pasta de trabalho em um servidor armazenados em cache
Como: Alterar de dados em uma pasta de trabalho em um servidor em cache