暗号化された 2007 Excel ドキュメントを読み取ろうとすると、OOXML ライブラリの使用に問題が発生します。DecryptToStream メソッドに送信したパスワードは、「パスワードが無効です」というメッセージを送り返していますが、Excel に直接アクセスすると、パスワードは正常に機能します。以下は私が使用しているコードです。
OleStorage ols = new OleStorage(d.fileLocation);
OfficeCrypto oc = new OfficeCrypto();
Stream test = oc.DecryptToStream(ols, "test123");
また、POI Decryptor を使用して、暗号化された 2007 Excel を読み取ろうとしましたが、これもうまくいきませんでした。以下はコードです。
FileStream file = new FileStream(d.fileLocation, FileMode.Open, System.IO.FileAccess.Read);
NPOI.POIFS.FileSystem.POIFSFileSystem nfs;
nfs = new NPOI.POIFS.FileSystem.POIFSFileSystem(file);
Stream excelData;
try
{
string password = "test123";
EncryptionInfo info = new EncryptionInfo(nfs);
Decryptor dc = Decryptor.GetInstance(info);
if (!dc.VerifyPassword(password))
{
throw new NotImplementedException();
}
excelData = dc.GetDataStream(nfs);
}
catch (Exception ex)
{
excelData = (Stream)file;
}
VerifyPassword メソッドは、何を渡しても常に true を返し、ドキュメントを読み取れません。http://poi.apache.org/encryption.htmlを参考に上記のコードを作成しました。
どんな助けでも大歓迎です!