2009-05-27 10 views
6

Kennt jemand die Syntax dafür? Ich habe überall gesucht und alles, was ich finden kann, ist C++ - Code dafür. Ich versuche, eine Excel-Datei mit dem System.IO.Packaging-Namespace programmgesteuert zu schützen.Passwort Schutz einer Excel-Datei in C#

Irgendwelche Ideen?

Zusätzliche Hinweise:

Ich bin nicht den Excel-Interop verwenden - sondern die System.IO.Packaging Namespace zu verschlüsseln und Passwort, um die Excel-Datei schützen.

+0

So sind Sie versuchen, irgendeine Art von einem Passwort geschützt Zip-Datei zu erstellen, die Ihre Frage bedeutet, nicht spezifisch für Excel? – VVS

+2

Wie ich verstanden habe, bezieht er sich auf die "Speichern mit Passwort" -Funktion von Excel, die über die Excel-OM verwendet werden kann. –

Antwort

7

Wenn Sie eine Excel-Passwort wollen alles, was Sie brauchen, ist etwas Ähnliches:

using Microsoft.Office.Interop.Excel 

//create your spreadsheet here... 

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

Diese Excel erfordert installiert werden.

, die nichts mit System.IO.Packaging natürlich zu tun ist, so müssen Sie unter Umständen Ihre Frage neu zu formulieren ...

0

Mit System.IO.Packaging ist es nicht möglich. Sie müssen Microsoft.Office.Interop.Excel mit der Worksheet.SaveAs Methode verwenden. Dies erfordert, dass Excel auf Ihrem Zielsystem installiert wird.

+0

Hier ist ein Link, der dies für Interessierte erklärt: https://social.msdn.microsoft.com/Forums/en-US/7021768e-4562-43dd-e-d-e/89c10970bf33/create-password-protected-excel-sheet-with- ooxml? forum = os_specifications – MikeTeeVee

1

Sie müssen die SaveAs-Methode auf dem Arbeitsblatt verwenden. Es hat einen Parameter, um ein Passwort zu setzen. Hier ist ein Beispiel in VB, die in C#

umgewandelt werden können

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

+0

Obwohl Excel (und COM-Automatisierung im Allgemeinen) ist in VB viel einfacher als 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

mit Excell Interop, aber jedoch ist der Schlüsselpunkt hier Workbook.WritePassword = "somepassword", das ist die Art und Weise, die wir zuweisen müssen. –