既存のExcelファイルを開こうとしたときに同じ問題に直面し、数日間それを使用しました。私の場合、暗号化が原因で「書き込み操作中にディスクエラーが発生しました。(HRESULTからの例外:0x8003001D(STG_E_WRITEFAULT))」という例外が発生しました。
パスワードを渡すことで.xlsxファイルを読み取ることができました。私の場合、空の文字列""で十分でした。
あなたの場合、パスワードでコンストラクターを使用してパッケージを初期化してみてください:
public ExcelPackage(Stream newStream, string Password)
package = new ExcelPackage(stream, "");
ExcelPackageのソースコードをご覧くださいhttp://epplus.codeplex.com/SourceControl/latest#EPPlus/ExcelPackage.cs
方法があります
private void Load(Stream input, Stream output, string Password)
これは、Excelファイルをロードするために使用されます。
private void Load(Stream input, Stream output, string Password)
..。
if (Password != null)
{
Stream encrStream = new MemoryStream();
CopyStream(input, ref encrStream);
EncryptedPackageHandler eph = new EncryptedPackageHandler();
Encryption.Password = Password;
ms = eph.DecryptPackage((MemoryStream)encrStream, Encryption);
}
else
{
ms = new MemoryStream();
CopyStream(input, ref ms);
}
..。
パスワードが空であっても、コードはExcelストリームを復号化しようとしますが、NULLではありません。
ただし、暗号化されていないファイルのパッケージを初期化しようとすると、例外が発生します。
「ストリームは有効な/サポートされている暗号化されたドキュメントではありません。」