2009-05-27 37 views
6

¿Alguien sabe la sintaxis para esto? He estado buscando en todas partes y todo lo que puedo encontrar es código C++ para esto. Intento proteger con contraseña un archivo Excel programáticamente utilizando el espacio de nombres System.IO.Packaging.Contraseña Protección de un archivo de Excel en C#

¿Alguna idea?

Notas adicionales:

no estoy usando la interoperabilidad de Excel - pero en cambio el espacio de nombres System.IO.Packaging para cifrar y proteger con contraseña el archivo de Excel.

+0

Así que estamos tratando de crear algún tipo de un archivo zip protegido por contraseña que significa que su pregunta es no es específico para sobresalir? – VVS

+2

Según tengo entendido, se refiere a la función "Guardar con contraseña" de Excel que se puede utilizar a través de Excel OM. –

Respuesta

7

Si desea una contraseña de Excel todo lo que necesita es algo como esto:

using Microsoft.Office.Interop.Excel 

//create your spreadsheet here... 

WorkbookObject.Password = password; 
WorkbookObject.SaveAs("spreadsheet.xls") 

Esto requiere Excel para ser instalado.

eso no es nada que ver con System.IO.Packaging por supuesto, por lo que puede que tenga que repetir su pregunta ...

0

No es posible usando System.IO.Packaging. Tendrá que usar Microsoft.Office.Interop.Excel usando el método Worksheet.SaveAs. Esto requiere que Excel esté instalado en su sistema de destino.

+0

Aquí hay un enlace que explica esto para los interesados: https://social.msdn.microsoft.com/Forums/en-US/7021768e-4562-43dd-9d5e-89c10970bf33/create-password-protected-excel-sheet-with- ooxml? forum = os_specifications – MikeTeeVee

1

Deberá usar el método SaveAs en la Hoja de trabajo. Tiene un parámetro para establecer una contraseña. Este es un ejemplo en VB que se puede convertir a C#

http://www.codeproject.com/KB/office/Excel_Security.aspx

+0

Aunque Excel (y la automatización COM en general) es mucho más fácil en VB que en C# (3.0). –

1
using System.IO; 
using Excel=Microsoft.Office.Interop.Excel; 

class ExcelUtil 
{ 
    public string Filename; 

    private Excel.Application oexcel; 

    private Excel.Workbook obook; 

    private Excel.Worksheet osheet; 
    public void createPwdExcel() 
    { 
     try 
     { 
      // File name and path, here i used abc file to be 
      // stored in Bin directory in the sloution directory 
      //Filename = (AppDomain.CurrentDomain.BaseDirectory + "abc.xls"); 
      if (File.Exists(Filename)) 
      { 
       File.Delete(Filename); 
      } 

      if (!File.Exists(Filename)) 
      { 
       // create new excel application 
       Excel.Application oexcel = new Excel.Application(); 
       oexcel.Application.DisplayAlerts = false; 
       obook = oexcel.Application.Workbooks.Add(Type.Missing); 
       oexcel.Visible = true; 
       Console.WriteLine("Generating Auto Report"); 
       osheet = (Excel.Worksheet)obook.Sheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
       osheet.Name = "Test Sheet"; 
       osheet.get_Range("A1:G1").Merge(); 
       osheet.get_Range("A1").Value = @"Implementing Password Security on Excel Workbook Using Studio.Net"; 

       osheet.get_Range("A1").Interior.ColorIndex = 5; 
       osheet.get_Range("A1").Font.Bold = true; 
       string password = "abc"; 
       obook.WritePassword = password; 
       obook.SaveAs("Chandra.xlsx"); 
       // otherwise use the folowing one 
       // TODO: Labeled Arguments not supported. Argument: 2 := 'password' 
       // end application object and session 
       osheet = null; 
       obook.Close(); 
       obook = null; 
       oexcel.Quit(); 
       oexcel = null; 
      } 

     } 
     catch (Exception ex) 
     { 

     } 

    } 
} 
+0

usando Excell Interop, pero el punto clave aquí es Workbook.WritePassword = "somepassword", esta es la forma que tenemos que asignar. –

Cuestiones relacionadas