如何划分excel表中具有不同空格的数据

时间:2013-07-05 05:03:34

标签: java excel

我使用Java从Excel工作表中获取数据。我必须划分Excel工作表的每一行,并将它们分别存储到数组Item1Item2Item3Item4中。

Excel表格

1.  Item1         Item2       Item3        Item4
2.  104F410       020544E0    1120D3614    HD434816N 43X48 16-MIC CLEAR Runas
3.  Promo 1343u   548548T     3465689634   HD404816N 40X48 16-MIC CLEAR

(等)

我使用了以下代码,但是将项目错误地称为Item2Item3作为项目

    for (int realel = 0; realel < fouritems.size(); realel++) {
        System.out.println("4 elements can be splitted from   :" + fouritems.get(realel));
    }
    headitems2 = new String[fouritems.size()];
    int f = 0;
    for (int realel1 = 0; realel1 < fouritems.size(); realel1++) {
        headitems2 = fouritems.get(realel1).split("\\s+");
        try {
            Item1.add(headitems2[0]);
            System.out.println("Item1   :" + Item1.get(f));
            Item2.add(item1[1]);
            System.out.println("Item2  :" + VendorItem.get(f));
            Item3.add(items3[2]);
            System.out.println("Item3   :" + Item3.get(f));

            f++;
        } catch (Exception e) {
        }
    }

关于我如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:1)

几年前,我使用Apache POI - the Java API for Microsoft Documents来处理Excel文件。您可以使用API​​通过Cell类的getStringCellValue直接从工作表中获取数据。这非常适用于普通Excel表格。如果您的Excel文件包含许多花哨的功能或VBA代码,那么您可能会遇到麻烦。

假设您的所有单元格都被格式化为文本/字符串,下面的代码将读取Excel工作表的内容。在这种情况下,您必须读取数值,您必须使用getNumericCellValue()而不是getStringCellValue()。

import java.io.File;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;

public class ReadFromXLS {

  public static void main(String[] args) throws InvalidFormatException, IOException {
    File xlFile = new File("MyInput.xls");
    Workbook wb = WorkbookFactory.create(xlFile);
    Sheet sheet = wb.getSheet("Sheet1");

    Row row = null;
    Cell cell = null;
    String value = null;
    StringBuffer sb = new StringBuffer(100);

    for (int i = 1; i <= 2; i++) {
      row = sheet.getRow(i);
      for (int j=0; j <= 3; j++) {
        cell = row.getCell(j);
        value = cell.getStringCellValue();
        sb.append(";").append(value);
      }
      System.out.println(sb.substring(1));
      sb = new StringBuffer(100);
    }
  }
}