Senha Proteger um arquivo do Excel em C #
-
06-09-2019 - |
Pergunta
Alguém sabe a sintaxe para isso? Eu estive procurando por toda parte e tudo que eu posso encontrar é código C ++ para isso. Estou tentando proteger com senha um arquivo excel programaticamente usando o namespace System.IO.Packaging.
Todas as idéias?
Notas adicionais:
Eu não estou usando a interoperabilidade Excel - mas em vez do namespace System.IO.Packaging para criptografar e senha proteger o arquivo excel.
Solução
Se você quiser uma senha de Excel tudo que você precisa é algo como isto:
using Microsoft.Office.Interop.Excel
//create your spreadsheet here...
WorkbookObject.Password = password;
WorkbookObject.SaveAs("spreadsheet.xls")
Isto requer Excel para ser instalado.
Isso não é nada a ver com System.IO.Packaging
é claro, então você pode precisar reafirmar sua pergunta ...
Outras dicas
Você terá que usar o método SaveAs na planilha. Ele tem um parâmetro para definir uma senha. Aqui está um exemplo em VB, que pode ser convertido em C #
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)
{
}
}
}
Não é possível usando System.IO.Packaging
. Você terá que usar Microsoft.Office.Interop.Excel
usando o método Worksheet.SaveAs
. Isso requer Excel sendo instalado em seu sistema de destino.