2009-05-27 17 views
6

Qualcuno conosce la sintassi per questo? Ho cercato ovunque e tutto quello che posso trovare è il codice C++ per questo. Sto cercando di proteggere con password un file Excel utilizzando lo spazio dei nomi System.IO.Packaging.Password Protezione di un file Excel in C#

Qualche idea?

Note aggiuntive:

non sto usando l'interoperabilità di Excel - ma invece lo spazio dei nomi System.IO.Packaging per crittografare e proteggere con password il file di Excel.

+0

Quindi si sta cercando di creare una sorta di un file zip protetto da password che significa che la domanda è non specifico per Excel? – VVS

+2

Come ho capito, si riferisce alla funzione "Salva con password" di Excel che può essere utilizzata tramite Excel OM. –

risposta

7

Se si desidera una password di Excel tutto ciò che serve è qualcosa di simile:

using Microsoft.Office.Interop.Excel 

//create your spreadsheet here... 

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

Ciò richiede Excel per essere installato.

che è niente a che fare con System.IO.Packaging ovviamente, quindi potrebbe essere necessario riformulare la tua domanda ...

0

Non è possibile utilizzare System.IO.Packaging. Dovrai utilizzare Microsoft.Office.Interop.Excel utilizzando il metodo Worksheet.SaveAs. Ciò richiede che Excel sia installato sul tuo sistema di destinazione.

+0

Ecco un link che spiega questo per gli interessati: 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

Sarà necessario utilizzare il metodo SaveAs sul foglio di lavoro. Ha un parametro per impostare una password. Ecco un esempio in VB che può essere convertito in C#

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

+0

Sebbene Excel (e automazione COM in generale) sia molto più semplice in VB che in 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, ma comunque keypoint qui è Workbook.WritePassword = "somepassword", questo è il modo che dobbiamo assegnare. –

Problemi correlati