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

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

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

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

Q&A

解決済

1回答

2205閲覧

IllegalArgumentExceptionを解決したい

SPK

総合スコア15

Java

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

0グッド

0クリップ

投稿2019/05/18 14:50

前提・実現したいこと

Java POIでExcel(.xlsx)ファイルを作ろうとしています。

https://qiita.com/tool-taro/items/4b3c802bb114a9110ecb
まずは、上記サイトにあるソースを参考にしようと、そのまま持ってきて実行したところ
以下のメッセージが発生しました。

Exception in thread "main" java.lang.IllegalArgumentException: Calling Cell.setCellType(CellType.FORMULA) is illegal. Use setCellFormula(String) directly.
at org.apache.poi.ss.usermodel.CellBase.setCellType(CellBase.java:47)
at sample2.XLSXWriteTest.main(XLSXWriteTest.java:222)

どのようにすればこのメッセージが解消されるでしょうか。
初歩的な質問で申し訳ありませんが、どなたかご教授お願いします。

補足情報(FW/ツールのバージョンなど)

以下のライブラリをダウンロードしております。
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

バージョン違いのためと思います.

Interface Cell

setCellType

@Deprecated
@Removal(version="5.0")
void setCellType(CellType cellType)
Deprecated. This method is deprecated and will be removed in POI 5.0. Use explicit setCellFormula(String), setCellValue(...) or setBlank() to get the desired result.

投稿2019/05/18 15:06

jimbe

総合スコア12646

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

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

SPK

2019/05/19 00:45

回答ありがとうございます。 申し訳ありませんが、追加で質問させてください。 教えていただいたサイトを参考にして、(例)のように setCellType(CellType cellType)を setCellFormula(String), setCellValue(...) or setBlank() に変えてみましたが、引数の型が異なるため、コンパイルが通りません。 (例) setCellType(CellType.STRING);→ cell.setCellFormula(CellType.STRING); 引数をString型にするにはどうすればよいのでしょうか・・・
jimbe

2019/05/19 01:01 編集

setCellFormula の箇所はお読みになりましたでしょうか. setCellFormula がバージョンによって変化しているかは追っていませんが, ドキュメントにはそれらしい記述は書かれておりませんので, setCellFormula に CellType.* を渡すことは出来ないと思います. 想像しますと, 今までは setCellType で「セルタイプ='文字列' / '式' 」と設定した後に setCellValue/setCellFormula で値/式を設定していたものを, setCellType を廃止して setCellValue/setCellFormula 内部でセルの値/式を設定すると同時に「セルタイプ='文字列' / '式'」相当の処理も行うようにしたのではないでしょうか. ですので, setCellType と setCellValue/setCellFormula をセットして使用している場合は, 単に setCellType を削除するだけかと思います.
SPK

2019/05/19 03:40

ありがとうございます!! エラーが解決しました。 setCellValue/setCellFormulaだけで setCellTypeの役割も果たすことができるようになった ということなんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問