回答編集履歴

1

別回答にあったNPOI に再計算させてみたところ、セル参照程度であれば問題なくいけました。

2021/05/17 10:27

投稿

rtazaki
rtazaki

スコア69

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  var book = NPOI.SS.UserModel.WorkbookFactory.Create(file_name);
40
40
 
41
- // read_sample: Range("C6:G6") = R[5]C[2..5] = data1..5
41
+ // read_sample: Range("C6:G6") = R[5]C[2..5] = sample!B2..6への参照
42
42
 
43
43
  var sheet_rs = book.GetSheet("read_sample");
44
44
 
@@ -84,17 +84,21 @@
84
84
 
85
85
  // ----
86
86
 
87
- // https://teratail.com/questions/338753
88
-
89
87
  // ForceFormulaRecalculationによって、
90
88
 
91
89
  // 「次回読み込み時に」「Excelによって」再計算が強制される模様。
92
90
 
93
91
  // ----
94
92
 
95
- sheet.ForceFormulaRecalculation = true;
93
+ // sheet.ForceFormulaRecalculation = true;
96
94
 
97
95
  }
96
+
97
+
98
+
99
+ // NPOIに再計算させる。
100
+
101
+ book.GetCreationHelper().CreateFormulaEvaluator().EvaluateAll();
98
102
 
99
103
 
100
104
 
@@ -102,7 +106,7 @@
102
106
 
103
107
  // 期待: data6..10になって欲しいが、そのままでもよい。
104
108
 
105
- // 結果: data1..5なので、変わっていない。
109
+ // 結果: data6..10
106
110
 
107
111
  foreach (var c in Enumerable.Range(2, 5))
108
112
 
@@ -114,7 +118,7 @@
114
118
 
115
119
  Console.WriteLine(cell.StringCellValue);
116
120
 
117
- // data1 data2 data3 data4 data5
121
+ // data6 data7 data8 data9 data10
118
122
 
119
123
  }
120
124
 
@@ -132,7 +136,7 @@
132
136
 
133
137
  // 期待: data6..10になって欲しい。
134
138
 
135
- // 結果: data1..5なので、変わっていない。
139
+ // 結果: data6..10
136
140
 
137
141
  foreach (var c in Enumerable.Range(2, 5))
138
142
 
@@ -144,7 +148,7 @@
144
148
 
145
149
  Console.WriteLine(cell.StringCellValue);
146
150
 
147
- // data1 data2 data3 data4 data5
151
+ // data6 data7 data8 data9 data10
148
152
 
149
153
  }
150
154