2016-08-05 39 views
0

我想讓示例程序運行excel(xlsx)電子表格並加載2維數組中的數據。我已經使用Google搜索並找到了一些好的示例。 但我面臨的問題是,它不是通過終端運行,雖然它運行良好,當我從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

:包含在main()來運行類,請選擇「文件夾中需要的jar複製下一個目的地罐子」然後由控制檯和調用進入DEST JAR文件夾中運行它如果你正在使用庫,你也需要在編譯時將它們放在類路徑中。 –

回答

1

首先javac用於編譯,如果您嘗試使用它,則需要指定classpath。我認爲這不是你想要的,你想運行它,而不是正確的編譯它?從命令行運行它最簡單的方法:

使用eclipse「Export runnable jar」工具創建「runnable jar」工具(右鍵單擊project-> export-> java-> runnable jar file-> select the proper 。

java -jar yourDestJarName.jar 
+0

Hey Krzysztof Cichocki,謝謝你的回覆,是的,我嘗試通過運行上述命令來添加jar文件,它w與一個罐子工作正常,但是當我嘗試把所有5個罐子,然後這個命令不加載所有文件。 – sid

+0

請做同樣的事情,並注意粗體文本中描述的步驟。 –

+0

好吧,讓我試試這個,會讓你知道結果,謝謝你的回答 – sid