質問するログイン新規登録

質問編集履歴

2

2019/12/10 07:10

投稿

kuronoss
kuronoss

スコア14

title CHANGED
File without changes
body CHANGED
@@ -7,4 +7,55 @@
7
7
 
8
8
  やりたいことはJavaから作成されたファイルを開いたら、バーコードの値も222に変わっていて欲しい。
9
9
 
10
- 説明がわかりにくいかと思いますが、実現は可能でしょうか?
10
+ 説明がわかりにくいかと思いますが、実現は可能でしょうか?
11
+
12
+ (2019/12/10 追記)
13
+ Javaのソースは以下になります。
14
+ また、出力されたファイルのプロパティ「EnableCalculation」を
15
+ False⇒Trueにした時にもバーコードの値が111から222に変更されます。
16
+ (元のEnableCalculationはTrue)
17
+ どうやら再計算を行えば反映されるようなのですが…。
18
+
19
+ 〜Javaのソース開始〜
20
+
21
+ // テンプレートファイル
22
+ FileInputStream filein = new FileInputStream("C:/template_test.xls");
23
+ // 出力ファイル
24
+ FileOutputStream out = new FileOutputStream("C:/test.xls");
25
+ //ワークブックを読み込み
26
+ HSSFWorkbook wb = new HSSFWorkbook(filein);
27
+ //シートを読み込み
28
+ HSSFSheet sheet = wb.getSheet("Sheet1");
29
+
30
+ for (int rowIdx = sheet.getFirstRowNum(); rowIdx <= sheet.getLastRowNum(); rowIdx++) {
31
+ HSSFRow row = sheet.getRow(rowIdx);
32
+ if (row == null) {
33
+ continue;
34
+ }
35
+
36
+ for (int colIdx = row.getFirstCellNum(); colIdx < row.getLastCellNum(); colIdx++) {
37
+ short col = Short.parseShort(String.valueOf(colIdx));
38
+ HSSFCell cell = row.getCell(col);
39
+ if (cell == null) {
40
+ continue;
41
+ }
42
+
43
+ // テンプレートファイルの111を222に変更
44
+ if(cell.getStringCellValue().equals("111")) {
45
+ cell.setCellValue("222");
46
+ }
47
+ }
48
+ }
49
+
50
+ // ファイル書き込み
51
+ wb.write(out);
52
+ // 処理をクローズ
53
+ out.close();
54
+ filein.close();
55
+
56
+ 〜Javaのソース終了〜
57
+
58
+
59
+ ファイル書き込み前に「wb.setForceFormulaRecalculation(true);」とか
60
+ 「sheet.setForceFormulaRecalculation(true);」とかで再計算すれば反映されそうですが、
61
+ 現在のPOIのバージョンが古いのかsetForceFormulaRecalculationメソッドが存在しません…。

1

2019/12/10 07:09

投稿

kuronoss
kuronoss

スコア14

title CHANGED
File without changes
body CHANGED
@@ -7,4 +7,4 @@
7
7
 
8
8
  やりたいことはJavaから作成されたファイルを開いたら、バーコードの値も222に変わっていて欲しい。
9
9
 
10
- 説明がわかりにくいかと思いますが、実現は可能でしょうか
10
+ 説明がわかりにくいかと思いますが、実現は可能でしょうか