| ■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))
|
|