2017-09-12 5 views
0

スプレッドシートを更新するためにいくつかのコードを操作していましたが、スプレッドシートを開いて保存すると、メッセージが破損してメッセージが表示されることに気づいた "私たちができる限り回復しようとしていますか?変更を加えずにファイルを開くだけでファイルが破損する

これは、結果として得られるファイルは、プロセス中に3メガバイトの周囲から2メガバイトに縮小次のコード

FileInfo excelFile = new FileInfo("mysheet.xlsm"); 
using (ExcelPackage excel = new ExcelPackage(excelFile)) 
{ 
    excel.Save(); 
} 

によって複製することができます。

これはかなりストレートですが、私は何かが欠けているはずです。

+1

epplusサポートで問題が発生しましたか? – mjwills

+0

スプレッドシートにEPPlusでサポートされていないコンテンツが含まれている可能性があります(Excelでできることの100%はカバーしていません)。異なる/より基本的なスプレッドシートで試したことがありますか? – Pete

+0

@mjwillis私は[http://epplus.codeplex.com/discussions](discussionフォーラム)を見ましたが、それはすべてアクティブであるとは思われませんでしたので、私は最初にここに来ました。私もその道を試すことができました... – Chris

答えて

1

DISCAIMER:これが答えではないですが、私はいくつかのコード

を投稿したい私は、しかし、運で、あなたの問題を再現しようとしました。手順は次のとおりです。

Excel 2010で手動でスプレッドシートを作成しました.Sheet1のA1セルのテキストには単に「Hello」と表示されます。私も次のコードでマクロエディタ(Altキーを押しながらF11)にコードモジュールを追加しました:

:私は、マクロ有効スプレッドシート(​​\ Tempに\ Book1.xlsm C)として、これを保存し

Option Explicit 

Sub Foo() 

    MsgBox "Hello World", vbOKOnly, "Foo!" 

End Sub 

私はVisual StudioでC#コンソールアプリケーションを作成し、NuGetからEPPlusパッケージを追加しました。主な方法は次のようになります。

static void Main(string[] args) 
{ 
    using (var pck = new ExcelPackage(new FileInfo(@"c:\temp\Book1.xlsm"))) 
    { 
     pck.Save(); 
    } 
} 

これをデバッグすると、問題なく実行されます。

保存しているフォルダの権限をチェックして、EPPlusパッケージの更新を強制しましたか?

+0

私は助けていただきありがとうございます。 私はあなたの例を試してみましたが、それはうまくいきました。その後、別の場所で "Hello"を追加してみましたが、失敗しました.xlsmが正しく保存されるためにはマクロが必要です。この種のテストでは、問題のワークブックからテキストのみのワークシートをコピーしてコードを実行して失敗した以前の実験を検証します。 .xlsmを確実に保存できますが、ドキュメントのどの部分が問題の原因であるのかを見つけることは難しいかもしれません... – Chris

+0

問題なし - 幸運 – Pete

1

問題の最下部に到達できず、Interopライブラリに切り替えました。

関連する問題