C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 126 を表示中)
■75010 / )  Re[1]: OpenXMLでExcelにパスワードを付ける方法
□投稿者/ れい (6回)-(2015/02/18(Wed) 04:08:02)
No75009 (kanai さん) に返信
> 開発環境はWindows7, Visual Studio 2010, VB, .Net Framework 3.5です。
> 
> Officeオートメーションを使用せずに、Excelファイル(xlsx, Excel 2010の利用を想定)にパスワードを設定する方法を探しています。
> NPOI, ClosedXMLを試しましたが、該当する方法が見つからなかったので、OpenXMLを調べています。
> WorkbookProtection.WorkbookPasswordを使えば出来そうなのですが、具体的な設定方法が分からず困っております。
> DocumentFormat.OpenXml.HexBinaryValueという型のようですが、目的のパスワードの値をどのように加工して設定するのでしょうか。

OpenXmlは使ったことがありませんが、
Excelの書き込みパスワードでしたら詳細はundocumentedだと思います。

なので保証はありませんが、私は下記のコードで生成しています。

    Public Function CreateExcelHash(password As String) As String
        Dim h As Integer = password.Length Xor &HCE4B
        For i As Integer = 0 To password.Length - 1
            Dim v As Integer = Asc(password(i)) << i
            h = h Xor (v * 2 And &H7FFF) Or (v >> 16)
        Next
        Return h.ToString("X4")
    End Function

これをつかって次のようなコードで行けるかと。

>        wbPart.Workbook.WorkbookProtection.WorkbookPassword = HexBinaryValue.FromString(CreateExcelHash(password))

返信 編集キー/


管理者用

- Child Tree -