尝试读取加密的 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作为参考创建了上述代码。
任何帮助将不胜感激!