質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

6074閲覧

EPPluseを使用して出力したエクセルで自動計算させたい

tatatatatata

総合スコア7

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/10/02 08:49

現在Visual Studio 2012を使用して開発を行っており、
準備したテンプレートのエクセルにEPPluseを使用してデータを挿入しています。
そのテンプレートのエクセルにはsheetが2つあり、
sheet1にはEPPluseでデータを入れ、sheet2には計算式が複数入っており
sheet1のデータを使用して計算させてたいと思っております。

sheet1には問題なくデータを入れれているのですがsheet2に上手く反映できません。
何か必要な設定等ありましたら教えて頂きたいです。
※エクセルの計算方法の設定は自動になっております。

【使用しているエクセルの計算式】
・=sheet1!A1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kikukiku

2017/10/05 01:34

sheet2に反映されないとのことですが、どのような手順で第3者でも再現させられますでしょうか?手順1:アプリからsheet1のA1セルに書き込む。手順2:Excelファイルをセーブし、閉じる。手順3:Excelファイルを手動で開き、sheet2のA1セル上の式に従って、sheet1のA1セルが反映されていることを確認。というような手順でしょうか?
guest

回答1

0

ベストアンサー

VB.NETではなくC#で申し訳ないのですが、検証してみました。
手動でExcelファイルを開くと、式は反映されるのですが
アプリから開くと式の再計算が行われず、反映されないようです。
下記、コードで検証してます。
Calculateメソッドで、明示的に式の再計算をしてやると反映されるようです。

C#

1 private void button1_Click(object sender, EventArgs e) 2 { 3 FileInfo newFile = new FileInfo("result.xlsx"); 4 5 using (ExcelPackage package = new ExcelPackage(newFile)) 6 { 7 //シート選択 8 ExcelWorksheet sheet1 = package.Workbook.Worksheets["Sheet1"]; 9 ExcelWorksheet sheet2 = package.Workbook.Worksheets["Sheet2"]; 10 11 System.Diagnostics.Debug.WriteLine("変更前sheet1=" + sheet1.Cells["A1"].Value.ToString()); 12 System.Diagnostics.Debug.WriteLine("変更前sheet2=" + sheet2.Cells["A1"].Value.ToString()); 13 14 // A1セルに書き込み 15 sheet1.Cells["A1"].Value = "Hello World" + DateTime.Now.ToString(); 16 17 System.Diagnostics.Debug.WriteLine("変更直後sheet1=" + sheet1.Cells["A1"].Value.ToString()); 18 System.Diagnostics.Debug.WriteLine("変更直後sheet2=" + sheet2.Cells["A1"].Value.ToString()); 19 20 // 保存 21 package.Save(); 22 23 System.Diagnostics.Debug.WriteLine("セーブ後sheet1=" + sheet1.Cells["A1"].Value.ToString()); 24 System.Diagnostics.Debug.WriteLine("セーブ後sheet2=" + sheet2.Cells["A1"].Value.ToString()); 25 26 //式の計算し直し 27 sheet2.Cells["A1"].Calculate(); 28 29 System.Diagnostics.Debug.WriteLine("式再計算sheet2=" + sheet2.Cells["A1"].Value.ToString()); 30 } 31 }

投稿2017/10/05 02:36

編集2017/10/05 02:57
kikukiku

総合スコア514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問