2016-08-05 19 views
0

私はExcel(xlsx)スプレッドシートを実行し、2次元配列でデータを読み込むサンプルプログラムを作成しようとしています。私はグーグルでサンプルを見つけました。 しかし、私が直面している問題は、Eclipseからコードを実行するときにうまくいきますが、ターミナル経由で実行されていないということです。端末からJavaコードを実行中に発生する問題

ここで私は端子を介してコードを実行している間、私は取得していますエラーのスクリーンショットを添付しています: -

enter image description here

私が使用しているコードは次のとおりです。 - 私は

import java.io.FileInputStream; 

import org.apache.poi.xssf.usermodel.XSSFCell; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class ExcelDemo { 

    public static void main(String[] args) { 
     ExcelDemo xread2 = new ExcelDemo(); 
    } 

    public ExcelDemo() { 
     getvalue_1(); 
    } 

    public static void getvalue_1() { 
     XSSFRow row; 
     XSSFCell cell; 
     String[][] value = null; 
     double[][] nums = null; 

     try { 
      FileInputStream inputStream = new FileInputStream(
        "/home/ravi/Desktop/abc/Firebase/sid.xlsx"); 
      XSSFWorkbook workbook = new XSSFWorkbook(inputStream); 
      // get sheet number 
      int sheetCn = workbook.getNumberOfSheets(); 
      for (int cn = 0; cn < sheetCn; cn++) { 
       // get 0th sheet data 
       XSSFSheet sheet = workbook.getSheetAt(cn); 
       // get number of rows from sheet 
       int rows = sheet.getPhysicalNumberOfRows(); 
       // get number of cell from row 
       int cells = sheet.getRow(cn).getPhysicalNumberOfCells(); 
       value = new String[rows][cells]; 
       for (int r = 0; r < rows; r++) { 
        row = sheet.getRow(r); // bring row 
        if (row != null) { 
         for (int c = 0; c < cells; c++) { 
          cell = row.getCell(c); 
          nums = new double[rows][cells]; 
          if (cell != null) { 
           switch (cell.getCellType()) { 
           case XSSFCell.CELL_TYPE_FORMULA: 
            value[r][c] = cell.getCellFormula(); 
            break; 

           case XSSFCell.CELL_TYPE_NUMERIC: 
            value[r][c] = "" 
              + cell.getNumericCellValue(); 
            break; 

           case XSSFCell.CELL_TYPE_STRING: 
            value[r][c] = "" 
              + cell.getStringCellValue(); 
            break; 

           case XSSFCell.CELL_TYPE_BLANK: 
            value[r][c] = "[BLANK]"; 
            break; 

           case XSSFCell.CELL_TYPE_ERROR: 
            value[r][c] = "" + cell.getErrorCellValue(); 
            break; 
           default: 
           } 
           System.out.print(value[r][c]); 

          } else { 
           System.out.print("[null]\t"); 
          } 
         } // for(c) 
         System.out.print("\n"); 
        } 
       } // for(r) 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

ジャーこのデモでの使用方法は次のとおりです。 -

  1. dom4j.jar
  2. POI-3.9.jar
  3. POI-OOXML-3.5-FINAL.jar
  4. POI-OOXML-スキーマ-3.7-beta1.jar
  5. のXMLBeans-2.6.0.jar

どんな助けもありがとうございます。

ありがとうございます。

+0

ライブラリを使用している場合は、コンパイル時にクラスパスに置く必要があります。 –

答えて

1

まず第1にjavacはコンパイル用です。使用する場合は、クラスパスを指定する必要があります。私はそれがあなたが望むものではないと思う、あなたはそれを実行し、それを正しくコンパイルしたくないのですか?コマンドラインから実行する最も簡単な方法:

"Runnable jar"ツールを使用して "runnable jar"ツールを作成します(プロジェクト - > export-> java-> runnable jarファイル - >適切なものを選択してください)。実行される(メインを含むクラス)、「次の目的地ジャーにフォルダ内の必要なjarファイルをコピーする」オプションを選択してください次に、コンソールからのdestジャーフォルダを入力して呼び出すことによって、それを実行します。

java -jar yourDestJarName.jar 
+0

Hey Krzysztof Cichocki、ありがとうございます。上記のコマンドを実行してjarファイルを追加しようとしました。 1つのjarファイルで問題なく動作しますが、5つのjarファイルをすべて入れようとすると、このコマンドですべてのファイルが読み込まれることはありません。 – sid

+0

同じことをして、太字で説明されている手順に注意してください。 –

+0

大丈夫、私はこれを試してみましょう、結果を知ってもらいます、あなたの答えのためにありがとう – sid

関連する問題