是否可以通过编程方式密码保护Excel电子表格?

问题描述

| 当前,我们在服务器上创建Excel电子表格,然后将其发送给客户。现在,我们需要用密码保护这些文件。是否可以以编程方式向这些文件添加Excel密码保护? 我希望不要在服务器上安装Excel并使用表单自动执行此操作。 我是C#/。net开发人员,但是任何执行此操作的语言/方法都将不胜感激     

解决方法

您也可以在http://hivelink.io上检出\“ HiveLink \”。这项服务可让您通过为用户创建电子表格的轻量级版本来保护Excel电子表格。轻量级版本仅具有输入接口,已删除所有计算以及输出结果接口。您可以向每个用户发送邀请,他们可以下载轻量级电子表格,输入他们的输入并在不久后接收结果。 HiveLink安全地连接电子表格,从用户那里获取输入,并通过原始电子表格运行它并返回结果。     ,感谢您的答复。看来我不能轻易做到我所要求的。所以我不得不使用自动化。 !st我添加了对excel互操作的引用,然后以下代码完成了我所需要的。 (从带有两个参数文件名和密码的命令行运行)
    static void Main(string[] args)
    {
        if (args.Length != 2)
            return;

        string filename = args[0];
        string password = args[1];

        if (!File.Exists(filename))
            return;

        Excel.Application oexcel;
        Excel.Workbook obook;

        oexcel = new Excel.Application();
        oexcel.DisplayAlerts = false;

        obook = oexcel.Workbooks.Open(filename,false,5,\"\",true,System.Reflection.Missing.Value,\"\\t\",1,0);

        try
        {
            obook.SaveAs(filename,Password: password,ConflictResolution: XlSaveConflictResolution.xlLocalSessionChanges);
        }
        finally
        {
            obook.Close();
            oexcel.Quit();
        }
    }
    ,我建议使用经过验证的加密程序包。 (例如PGP)excel提供的密码保护功能不那么强大。     ,编辑:被误解的问题,无视。 我要解决此问题的最简单方法是通过加密进行压缩。     ,我想到的所有内容都需要在服务器上使用Excel并使用Excel Automation。 但是,也可以使用SharpZipLib,并将Excel文件放入受密码保护的ZIP文件中。 Windows XP和更好的Windows XP附带了一个默认的ZIP处理程序,该处理程序可以处理密码,因此,最终的效果是一个受密码保护的文件,他们只需要首先将其解压缩即可,但不需要其他软件。唯一的缺点是密码保护的Zip使用有缺陷的算法,而且我不认为ZIP的Windows Shell扩展可以理解AES。     ,您并不是一件容易的事,但是无论如何,您应该看看位于http://blogs.technet.com/b/gray_knowlton/上的Gray Knowlton的文章“使用Open XML的Office 2007中的文档加密”。存档/2008/09/02/document-encryption-in-office-2007-with-open-xml.aspx 还要在http://social.msdn.microsoft.com/Forums/en-US/oxmlsdk/thread/c48048a3-4013-419f-b612-3d971acb1919上的MSDN上检出线程 我希望这能有所帮助。 :o)     ,自己还没有尝试过,但是 http://xlsgen.arstdesign.com/intro.html 看起来它可能对您有用(尤其是http://xlsgen.arstdesign.com/core/locked.html上的详细信息) 必然地,在我们几年前正在研究的一个项目中,我们拥有一个可以使用互操作库构建Excel文件的系统。在开发中,它运行良好,在测试中,它运行良好,但是每次升级时都会出现问题。最后,将其追溯到MS不支持服务器环境中的互操作程序集。我们的过渡是Server 2008,测试是2003,所以如果您要在服务器上使用interop,则可能会非常麻烦。     ,我不知道这是否有帮助,但是最近我不得不做一些非常相似的事情。我必须使用OpenXML创建工作簿,然后再用密码保护它们。
     Public Sub CreateWorkBookPassword(WorkBookPath As String,password As String)

        Dim excelApplication As New Application()
        Dim excelWorkbook = excelApplication.Workbooks.Add(WorkBookPath)

        Try
            excelApplication.DisplayAlerts = False
            excelWorkbook.SaveAs(WorkBookPath,XlFileFormat.xlOpenXMLWorkbook,password)

        Finally
            excelWorkbook.Close()
            excelApplication.Quit()

            \'Close all excel processes that may be running
            Dim excelProcesses() As Process = Process.GetProcessesByName(\"EXCEL\")
            For Each Process As Process In excelProcesses
                Process.Kill()
                Exit For
            Next
        End Try
    End Sub
用法
 CreateWorkBookPassword(\"PathToExistingWorkbook\",\"yourPassword\")
    ,  我希望不要在服务器上安装Excel并使用表格   自动化做到这一点。 您必须尝试使用​​GroupDocs.Merger for .NET API。无论您是否在服务器上安装了Excel,它都可以保护/保护Excel电子表格。
string password = \"iamironman\";  
Stream openFile = new FileStream(sourceFile,FileMode.Open);  
DocumentResult result = new DocumentHandler().AddPassword(openFile,password);  
Stream documentStream = result.Stream;
var fileStream = File.Create(@\"D:/Data/Output.\" + result.FileFormat);
documentStream.CopyTo(fileStream);
documentStream.Close();
披露:我是GroupDocs的一名开发人员。