是否可以通过编程方式对excel电子表格进行密码保护

本文关键字:电子表格 密码保护 excel 可以通过 编程 方式 是否 | 更新日期: 2023-09-27 17:57:31

我们目前在服务器上创建Excel电子表格,然后将其邮寄给客户。我们现在需要对这些文件进行密码保护。是否可以通过编程方式为这些文件添加Excel密码保护?

我不想在服务器上安装Excel,而是使用表单自动化来完成这项工作。

我是一名C#/.net开发人员,但任何能做到这一点的语言/方法都将受到

是否可以通过编程方式对excel电子表格进行密码保护

的赞赏

您也可以在http://hivelink.io.这是一项服务,允许您通过为用户创建轻量级版本的电子表格来保护Excel电子表格。轻量级版本只有输入接口、删除所有计算和输出结果接口。你可以向每个用户发送邀请,他们可以下载轻量级的电子表格,输入他们的输入,并在不久后收到结果。HiveLink安全地连接电子表格,从用户那里获取输入,并在原始电子表格中运行并返回结果。

感谢您的回复。我似乎不能轻易地按照我的要求去做。所以我不得不使用自动化!我添加了一个对excel interop的引用,然后下面的代码完成了我需要的操作。(从命令行运行,带有2个参数的文件名和密码)

    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, 0, false, 5, "", "", true, System.Reflection.Missing.Value, "'t", false, false, 0, true, 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和更好的版本附带了一个默认的ZIP处理程序,可以处理密码,所以网络效果是一个受密码保护的文件,他们只需要先提取它,但不需要额外的软件。唯一的负面影响是受密码保护的Zip使用了一种有缺陷的算法,我不相信Zip的Windows Shell扩展还可以理解AES。

您的任务并不简单,但无论如何,您应该看看Gray Knowlton在http://blogs.technet.com/b/gray_knowlton/archive/2008/09/02/document-encryption-in-office-2007-with-open-xml.aspx

另请查看MSDN上的线程http://social.msdn.microsoft.com/Forums/en-US/oxmlsdk/thread/c48048a3-4013-419f-b612-3d971acb1919

我希望这能有所帮助。

:o)

我自己还没试过,但是http://xlsgen.arstdesign.com/intro.html看起来它可能对你有用(尤其是http://xlsgen.arstdesign.com/core/locked.html)

因此,在几年前我们正在进行的一个项目中,我们有一个使用互操作库构建Excel文件的系统。在开发中,它运行良好,在测试中运行良好,但每次都在登台时失败了。最后追踪到支持服务器环境上的互操作程序集的MSNOT。我们的暂存是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")