Does anyone know the syntax for this? I've been looking everywhere and all I can find is C++ code for this. I'm trying to password protect an excel file programatically using the System.IO.Packaging namespace.
Any ideas?
Additional notes:
I'm NOT using the Excel interop--but instead the System.IO.Packaging namespace to encrypt and password protect the excel file.
If you want an Excel password all you need is something like this:
using Microsoft.Office.Interop.Excel
//create your spreadsheet here...
WorkbookObject.Password = password;
WorkbookObject.SaveAs("spreadsheet.xls")
This requires Excel to be installed.
That's nothing to do with System.IO.Packaging
of course, so you might need to restate your question...
You will have to use the SaveAs method on the Worksheet. It has a parameter to set a password. Here is an example in VB which can be converted to C#
http://www.codeproject.com/KB/office/Excel_Security.aspx
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)
{
}
}
}
It's not possible using System.IO.Packaging
. You will have to use Microsoft.Office.Interop.Excel
using the Worksheet.SaveAs
method. This requires Excel being installed on your target system.