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

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

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

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

Q&A

解決済

2回答

27991閲覧

JavaでExcelファイルを読み込む処理にて、エラー

javabigineer

総合スコア87

Java

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

0グッド

0クリップ

投稿2017/05/18 02:23

Java言語にて、Excelファイルを読み込む処理を作成しています。

Ver : Java1.8
lib : poi-3.16-beta2.jar
poi-ooxml-3.16-beta2.jar

下記のように記述しています。

//Workbook読込 // Workbookオブジェクト生成 FileInputStream in = null; Workbook wb = null; try { // 読込対象Excelファイル名を編集 excel = excel.replaceAll("販売店", store); in = new FileInputStream(excel); wb = WorkbookFactory.create(in); }catch (FileNotFoundException e) { System.out.println("対象ファイルが見つかりません"); e.printStackTrace(); }catch (IOException e) { System.out.println(e.toString()); } catch (InvalidFormatException e) { System.out.println(e.toString()); } finally { try { in.close(); } catch (IOException e) { System.out.println(e.toString()); } }

wb = WorkbookFactory.create(in); の箇所でエラーが以下のように出ています。

Exception in thread "main" org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63) at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:604) at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:186) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:266) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:185) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:144) at ctl.MonthlyErrorDetail_Ctl.main(MonthlyErrorDetail_Ctl.java:108) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56) at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:60) ... 6 more Caused by: java.lang.NoClassDefFoundError: org/openxmlformats/schemas/spreadsheetml/x2006/main/StyleSheetDocument$Factory at org.apache.poi.xssf.model.StylesTable.readFrom(StylesTable.java:194) at org.apache.poi.xssf.model.StylesTable.<init>(StylesTable.java:145) ... 12 more Caused by: java.lang.ClassNotFoundException: org.openxmlformats.schemas.spreadsheetml.x2006.main.StyleSheetDocument$Factory at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 14 more

なにが問題なのでしょか?
処理の書き方としては問題ないのではと思っているのですが、、

ご教授いただけると助かります。

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

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

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

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

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

guest

回答2

0

実はあるJava用の無料コンポーネントがあり、それを試してみればどうでしょうか。コンポーネントの名前はSpire.XLS for Java、Excel文書の読み込みを含め、編集や印刷、セルの処理などあらゆる操作もサポートしていますので、実に便利なツールですよ。コードの部分も難しくなくて、以下の通り:

import

1 2import java.awt.*; 3 4public class CreateExcel { 5 public static void main(String[] args){ 6 //ワークブックのインスタンスを作成する 7 Workbook workbook = new Workbook(); 8 9 //一番目のワークシートをゲット 10 Worksheet sheet = workbook.getWorksheets().get(0); 11 //一番目のワークシートに名付ける 12 sheet.setName("Data Sheet"); 13 14 //ヘッダーセルのCellStyleを作成する 15 CellStyle style1 = workbook.getStyles().addStyle("Header Style"); 16 style1.getFont().setSize(12f); 17 style1.getFont().setColor(Color.BLACK); 18 style1.getFont().isBold(true); 19 style1.setHorizontalAlignment(HorizontalAlignType.Center); 20 style1.setVerticalAlignment(VerticalAlignType.Center); 21 22 //データセルのCellStyleを作成する 23 CellStyle style2 = workbook.getStyles().addStyle("Data Style"); 24 style2.getFont().setSize(10f); 25 style2.getFont().setColor(Color.BLACK); 26 27 //データを追加し、ヘッダーセルにスタイルを適用する 28 for (int column=1; column<5; column++) 29 { 30 CellRange header =sheet.getCellRange(1,column); 31 header.setValue("Column " + column ); 32 header.setStyle(style1); 33 header.setColumnWidth(15f); 34 } 35 36 // データを追加し、データセルにスタイルを適用する 37 for (int row=2; row<11; row++) 38 { 39 for (int column=1; column<5; column++) 40 { 41 CellRange cell = sheet.getCellRange(row, column); 42 cell.setValue("Data " + row + ", " + column); 43 cell.setStyle(style2); 44 } 45 } 46 47 //結果のファイルを保存する 48 workbook.saveToFile("CreateExcel.xlsx", FileFormat.Version2013); 49 } 50}

お助けになると幸いです(笑)

投稿2021/12/06 05:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

Excelファイルは扱ったことがないので正直自信がありませんが、
エラーメッセージを見る限り、NoClassDefFoundErrorですよね。
ググってみたところ、apache POI exception in reading xlsx files

xml

1<dependency> 2 <groupId>org.apache.poi</groupId> 3 <artifactId>poi-ooxml-schemas</artifactId> 4 <version>3.16-beta2</version> 5</dependency>

poi-ooxml-schemasというライブラリが必要なのではないかと思います。

投稿2017/05/18 11:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

javabigineer

2017/05/19 09:49

その通りでした!ありがとうございました!
javabigineer

2017/05/19 09:50

その通りでした!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問