2016-08-05 43 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