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

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

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

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Java

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

Q&A

1回答

595閲覧

JavaでExcel操作をしたい

motch_misa_ore

総合スコア15

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Java

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

0グッド

1クリップ

投稿2023/02/20 12:35

実現したいこと

Excelファイルの読み書きをJavaで行いたいのですが、コンパイルが通りません。環境の何かが原因のようなのですが、調べてもよくわかりませんでした。

発生している問題・エラーメッセージ

PS C:\Users\OWNER> & 'C:\Program Files\RedHat\java-1.8.0-openjdk-1.8.0.362-1\bin\java.exe' '-cp' 'C:\Users\OWNER\AppData\Local\Temp\vscodesws_ae67f\jdt_ws\jdt.ls-java-project\bin' 'ExcelC' Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: InvalidFormatException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Class.getMethod(Class.java:1784) at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632) Caused by: java.lang.ClassNotFoundException: InvalidFormatException at java.net.URLClassLoader.findClass(URLClassLoader.java:387) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ... 7 more

該当のソースコード

import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.util.Date; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; /** * Excelのcellの値を取得する * */ public class ExcelC { public static final String SAMPLE_XLSX_FILE_PATH = "C:\Users\OWNER\Project\User.xlsx"; public static void main(String[] args) throws IOException, InvalidFormatException { // Creating a Workbook from an Excel file (.xls or .xlsx) Workbook workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH)); Sheet sheet = workbook.getSheetAt(0); Row head = sheet.getRow(1); ExcelC aaa = new ExcelC(); DataFormatter dataFormatter = new DataFormatter(); //cellrow int bb = 3; //cellY座標 for(int y = 2 ; y < 12 ; y++) { Row row = sheet.getRow(y); System.out.print("Row" + bb + "\r\n"); bb ++; //cellX座標 for (int i = 0 ; i < 11 ; i++){ Cell headc = head.getCell(i); Cell cell = row.getCell(i); String cellValue = dataFormatter.formatCellValue(headc); System.out.print(cellValue + ": "); aaa.printCellValue(cell); System.out.print("\r\n"); } System.out.print("\r\n"); } // Closing the workbook workbook.close(); } private static void printCellValue(Cell cell) { DateFormat fd = DateFormat.getDateInstance(DateFormat.FULL); switch (cell.getCellTypeEnum()) { case BOOLEAN: System.out.print(cell.getBooleanCellValue()); break; case STRING: System.out.print(cell.getRichStringCellValue().getString()); break; case NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { Date kkk = cell.getDateCellValue(); System.out.print(fd.format(kkk)); } else { System.out.print(cell.getNumericCellValue()); } break; case FORMULA: System.out.print(cell.getCellFormula()); break; case BLANK: System.out.print(""); break; default: System.out.print(""); } System.out.print("\t"); } }

試したこと

調べてみたところどうもPower Shellのバージョンの問題だということなのですが、最新版をインストールしてそこからコマンドを打っても同じ結果が出ます。
これ以上自分で考えても答えが出そうにないので質問させていただきます。

以上よろしくお願いいたします。

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

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

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

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

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

jimbe

2023/02/20 14:44 編集

InvalidFormatException が無いと言われています。 import とかライブラリとかを間違えていませんか。
motch_misa_ore

2023/02/21 12:39

ご回答ありがとうございます。うーむ何が間違っているのでしょうか…?これはあるサイトからコピペして持ってきたので何が間違っているのかがわかりません…もう少し検討してみますが
guest

回答1

0

JavaでExcelファイルを読み書きする場合、Spire.XLS for Javaを試してみることをお勧めします。jarファイルをJavaプログラムにインポートするだけで使用できます。製品パッケージには、多数のサンプルコードが含まれているため、非常に便利です。
以下のコードはExcelファイルを読み書きする方法の例

java

1import com.spire.xls.*; 2 3public class ExcelReadWriteExample { 4 public static void main(String[] args) { 5 //Excelファイルをロードする 6 Workbook workbook = new Workbook(); 7 workbook.loadFromFile("example.xlsx"); 8 9 //最初のワークシートを取得する 10 Worksheet sheet = workbook.getWorksheets().get(0); 11 12 //セルA1に値を設定する 13 sheet.getCellRange("A1").setValue("Hello, World!"); 14 15 //変更されたExcelファイルを保存する 16 workbook.saveToFile("example_modified.xlsx", FileFormat.Version2016); 17 } 18}

この例では、Spire.XLS for Javaを使用してExcelファイルを読み込み、A1に値を設定して、変更内容を新しいExcelファイルに保存しています。必要に応じて、この例をカスタマイズして、より複雑なExcelファイルの操作を実行することができます。

投稿2023/05/18 06:23

Gia2apo

総合スコア62

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問