2017-03-17 66 views
0

所以我有这个变量PV1从Excel文件存储第一行。但我想要一个将整行存储在向量中的变量。如何将Excel工作表转换为使用Jxl的矢量

我使用System.out.println()只是为了看看它是否需要良好的列。

String PV1; 
for(int col = 0;col < columns;col++) 
{ 
    for(int row = 1;row < rows;row++) 
    { 
     PV1 = sheet.getCell(1, row).getContents(); 
     System.out.println(Double.parseDouble(PV1)); 
    } 
} 

我正在使用jxl访问Excel文件。

任何帮助将不胜感激!

Edit: This is the table我需要在PV1中存储所有行。

+2

这个向量是一个'java.util.Vector'吗?如果是这样,请考虑使用java.util.List代替。 –

+0

在我的答案我嵌套两个向量创建矩阵。在你的问题中不清楚你需要多少维度。 – freedev

+0

我有43478行和6列。 – Catalin

回答

0

如果我理解正确的话,你需要的是应该保持第一行中的所有列向量。

如果是这样的话,你可以这样做:

Vector<Double> firstRow = new Vector<>(); 
if(rows > 0){ 
    for(int col = 0;col < columns;col++){ 
     String pv = sheet.getCell(1, col).getContents(); 
     firstRow.add(Double.parseDouble(pv)); 
    } 
} 

你或许应该考虑使用的List而不是Vector

从您的评论看来,你似乎想要检索所有行中的特定列。你可以这样做:

int pv1ColumnIndex = 1; 
List<Double> pv1Columns = new ArrayList<>(); 
for(int row = 1;row < rows;row++){// row = 1 to skip the header 
    String pv1 = sheet.getCell(pv1ColumnIndex, row).getContents(); 
    pv1Columns.add(Double.parseDouble(pv1)); 
} 
+0

不是。我需要存储矢量/列表中的所有行。我上传了一张照片,可以说明情况。所以在PV1中,我想要列PV1所包含的所有行。 – Catalin

+0

@AntonescuCatalin我编辑了我的答案。我认为第二个例子会做你需要做的事情。我不确定getCell()方法的参数是什么。如果它是'getCell(rowIndex,columnIndex)''你必须用'row'替换'pv1ColumnIndex',反之亦然。连续成功。 – Titus

0

这将帮助你

String PV1; 
    Object[] data = Object[columns] 
    for(int col = 0;col < columns;col++) 
    { 
     for(int row = 1;row < rows;row++) 
     { 
     PV1 = sheet.getCell(1, row).getContents(); 
     data[col] = PV1; 
     System.out.println(Double.parseDouble(PV1)); 
     } 
    } 
+0

实际上'Object [columns]'应该是'Object [columns *(rows - 1)]',为什么要使用'Object'数组? – Titus

+0

是的,你是对的。如果你想将数据存储为字符串,那么字符串数组就可以。但是我可以看到,您正在将字符串转换为双精度型,所以我认为您将在代码中的某个位置转换数据。 – Keaz