0

我正在使用 Java 从 Excel 工作表中获取数据。我必须划分 Excel 工作表的每一行并将它们分别存储到Arrays Item1, Item2, ..Item3Item4

电子表格

1. 项目 1 项目 2 项目 3 项目 4
2. 104F410 020544E0 1120D3614 HD434816N 43X48 16-MIC CLEAR Runas
3. Promo 1343u 548548T 3465689634 HD404816N 40X48 16-MIC CLEAR

(ETC)

我使用了以下代码,但它得到的项目不正确,就像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) {
        }
    }

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

4

1 回答 1

1

几年前,我使用Apache POI - 用于 Microsoft 文档的 Java API来处理 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);
    }
  }
}
于 2013-07-05T06:21:29.327 回答