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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

4119閲覧

エクセルのセルに入れた計算式が消え#VALUE!になる

aki.M

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/06/18 08:15

編集2017/06/18 08:20

既存のエクセルシートに直に入れていたデータをデータベースから取るようにしたところ、
直にデータを入れていたセルを参照しているセル計算式が消えて#VALUE!になってしまいました。

setForceFormulaRecalculationで再計算しているはずなのですがうまくいきません。
宜しくお願い致します。

以下が追加した分のソースになります。

HSSFSheet goalSheet = workbook.getSheet("目標"); HSSFRow goalRow = goalSheet.getRow(2); HSSFCell goalCell = goalRow.getCell(1); goalCell = goalRow.getCell(16); goalCell.setCellValue(criteria.getMaterial_date().substring(0, 4) + "/4/1"); // 画面のリストボックス「部門名」用のリストを取得 for (int i = 0; i < bumonInfoAccess.getButenInfoList(BumonInfoAccess.BUMON_SELECT_FLG_OFF).size(); i++) { //部門コードを取得 int ade = bumonInfoAccess.getButenInfoList(BumonInfoAccess.BUMON_SELECT_FLG_OFF).get(i).getBumon_cd(); //部門名を取得 String adNm = bumonInfoAccess.getButenInfoList(BumonInfoAccess.BUMON_SELECT_FLG_OFF).get(i).getBumon_nm(); AnnualsalestargetAccess ASTAdao = new AnnualsalestargetAccess(getLogger(), getDbAccessInfo()); //年間目標をDBから取得 ArrayList<AnnualsalestargetEntity> ASTAlist = ASTAdao.getAnnualsalestarget(criteria.getMaterial_date().substring(0, 4), ade); AnnualsalestargetEntity ASTAtotal = new AnnualsalestargetEntity(); for (AnnualsalestargetEntity entity : ASTAlist) { ASTAtotal.setAprsalesValue(ASTAtotal.getAprsalesValue() + entity.getAprsalesValue()); ASTAtotal.setMaysalesValue(ASTAtotal.getMaysalesValue() + entity.getMaysalesValue()); ASTAtotal.setJunsalesValue(ASTAtotal.getJunsalesValue() + entity.getJunsalesValue()); ASTAtotal.setJulsalesValue(ASTAtotal.getJulsalesValue() + entity.getJulsalesValue()); ASTAtotal.setAugsalesValue(ASTAtotal.getAugsalesValue() + entity.getAugsalesValue()); ASTAtotal.setSepsalesValue(ASTAtotal.getSepsalesValue() + entity.getSepsalesValue()); ASTAtotal.setOctsalesValue(ASTAtotal.getOctsalesValue() + entity.getOctsalesValue()); ASTAtotal.setNovsalesValue(ASTAtotal.getNovsalesValue() + entity.getNovsalesValue()); ASTAtotal.setDecsalesValue(ASTAtotal.getDecsalesValue() + entity.getDecsalesValue()); ASTAtotal.setJansalesValue(ASTAtotal.getJansalesValue() + entity.getJansalesValue()); ASTAtotal.setFebsalesValue(ASTAtotal.getFebsalesValue() + entity.getFebsalesValue()); ASTAtotal.setMarsalesValue(ASTAtotal.getMarsalesValue() + entity.getMarsalesValue()); } //セットする goalRow = goalSheet.getRow(i+2); goalCell = goalRow.createCell(17); goalCell.setCellValue(ade); goalCell = goalRow.createCell(18); goalCell.setCellValue(adNm); goalCell = goalRow.createCell(19); goalCell.setCellValue(ASTAtotal.getAprsalesValue()); goalCell = goalRow.createCell(20); goalCell.setCellValue(ASTAtotal.getMaysalesValue()); goalCell = goalRow.createCell(21); goalCell.setCellValue(ASTAtotal.getJunsalesValue()); goalCell = goalRow.createCell(22); goalCell.setCellValue(ASTAtotal.getJulsalesValue()); goalCell = goalRow.createCell(23); goalCell.setCellValue(ASTAtotal.getAugsalesValue()); goalCell = goalRow.createCell(24); goalCell.setCellValue(ASTAtotal.getSepsalesValue()); goalCell = goalRow.createCell(25); goalCell.setCellValue(ASTAtotal.getOctsalesValue()); goalCell = goalRow.createCell(26); goalCell.setCellValue(ASTAtotal.getNovsalesValue()); goalCell = goalRow.createCell(27); goalCell.setCellValue(ASTAtotal.getDecsalesValue()); goalCell = goalRow.createCell(28); goalCell.setCellValue(ASTAtotal.getJansalesValue()); goalCell = goalRow.createCell(29); goalCell.setCellValue(ASTAtotal.getFebsalesValue()); goalCell = goalRow.createCell(30); goalCell.setCellValue(ASTAtotal.getMarsalesValue()); } // ワークシートの埋め込み関数を再計算 goalSheet.setForceFormulaRecalculation(true); HSSFSheet tsukiGoalSheet = workbook.getSheet("通期目標"); tsukiGoalSheet.setForceFormulaRecalculation(true);

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

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

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

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

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

m.ts10806

2017/06/18 22:52

タグのJAVAは本質問とは関係ないのでは。VBAとした方が良いでしょう。
jawa

2017/06/21 02:23

↑私も使用したことはないので詳しくはないのですが、VBAではなくPOIというものを使ってJAVAからExcel操作しているのだと思います。
guest

回答1

0

ベストアンサー

確証は持てませんが、数式がセル参照している状態で、

java

1 goalCell = goalRow.createCell(17);

みたいにやっちゃうと、元のセルを破棄してしまい、数式の参照が壊れてるんではないでしょうか。

ゆえに、すでにセルがあり値を入れられる(セルを作らなくてもいい)ならば、

java

1 goalCell = goalRow.getCell(17);

で、getCellしたセルに値を入れればよいのではないでしょうか。

Cellオブジェクトがなく、Createしないと無理なのであれば、
(全くセルのない状態時から値を投入するのならば、)
いっそ、既に入力されている数式も当てにせず、
数式を自分で入れなおせばよいのではないでしょうか。

java

1 //適当なサンプルです。 2 goalRow.createCell(99).setCellFormula("SUM(A1:A98))");

投稿2017/06/21 07:53

akio221

総合スコア716

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

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

aki.M

2017/07/07 11:04

ありがとうごうざいました。無事解決しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問