암호화 된 2007 Excel 문서를 읽으려고 할 때 OOXML 라이브러리를 사용하는 데 문제가 있습니다. DecryptToStream 메서드에 보내는 암호는 "Password not valid"메시지를 다시 보내지만 직접 입력하면 암호가 제대로 작동합니다. 아래는 내가 사용하고있는 코드입니다.OOXML Excel 암호가 작동하지 않는 NPOI
OleStorage ols = new OleStorage(d.fileLocation);
OfficeCrypto oc = new OfficeCrypto();
Stream test = oc.DecryptToStream(ols, "test123");
는 또한 암호화 된 2007 엑셀을 읽으려고 시도하는 POI 해독기를 사용하여 시도했다, 그러나 나는뿐만 아니라이와 운이 없었 없습니다. 아래는 코드입니다.
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 방법에 관계없이 항상 내가 전달할 어떤 사실 반환되지 않으며 여전히 문서를 읽지 않습니다. 나는 위의 코드를 참조로 http://poi.apache.org/encryption.html을 사용하여 만들었습니다.
도움이 될 것입니다.
도움을 주신 Hans에게 감사드립니다. 나는이 첫번째 일을 내일 시도하고 그에 따라 표시 할 것이다. –
위의 해결책을 사용하여 몇 가지 문제가 있습니다. NPOI 클래스 라이브러리에는 ExcelPackage 클래스가 없습니다.여기에 포함시킬 수있는 또 다른 라이브러리는 http://excelpackage.codeplex.com/ 클래스를 포함하고 있습니다. ExcelPackage.dll을 추가 할 때. 귀하의 예제에서 생성자는 문자열과 파일 스트림보다는 fileinfo를 취하므로 작동하지 않습니다. 마지막으로, ExcelPackage 라이브러리를 연구 할 때, 여기에있는 EPPlus 라이브러리를 사용하는 것이 더 좋음을 알았습니다 : http://epplus.codeplex.com/. 당신의 대답에 대한 평가가 잘못 되었다면 저를 바로 잡으십시오. –
한스의 솔루션은 EPPlus 문서와 매우 유사하게 보입니다. EPPlus를 의미 할 때 실수로 NPOI를 넣었을 수도 있습니다. EPPlus를 사용할 때 나는 당신의 답을 받아 들였습니다. –