2012-07-19 112 views
5

Estoy tratando de obtener la representación base64 de un documento de Word activa mientras aún está abierto en Word y estoy recibiendo el siguiente error en ReadAllBytes():Convertir documento de Word a cadena base64 C#

el proceso no puede acceder a la 'ruta del archivo' archivo que está siendo utilizado por otro proceso

public string GetEncodedTemplate() 
     { 
      //Convert a Word document's base64 representation 
      string base64 = String.Empty; 
      _application.ActiveDocument.Save(); 

      string docPath = _application.ActiveDocument.FullName; 
      byte[] binarydata = File.ReadAllBytes(docPath); 
      base64 = System.Convert.ToBase64String(binarydata, 0, binarydata.Length); 
      return base64; 
     } 

entiendo que el error se produce debido a que el documento especificado todavía está abierto en Word, mi pregunta es - ¿es todavía posible de alguna manera obtener la representación base64 f el documento sin recurrir a guardar en un archivo temporal?

estoy usando C# .NET 4.0 y MS Office 2010

Respuesta

5

estás en lo correcto - Palabra tiene un bloqueo en el documento actual. Para obtener los bytes del documento actual, necesitará copiar el archivo existente (File.Copy) o guardar en un nuevo archivo (Document.SaveAs o IPersistFile.Save) para leer su contenido.

Cuestiones relacionadas