怎么获取excel中的列名A,B,C...
比如创建一个excel,默认会有A,B,C这些个列名 ,数据格式如下:
A  B  C 
1  2  3
4  5  6
.......
当读取4的时候怎么知道是属于A?不要通过什么column 和row去获取在哪行哪列再去匹配A,B,C这些,有没有直接通过当前Cell获取A,B,C之类的,POI 的API没有此类方法
高手指点下,不胜感激!

解决方案 »

  1.   

    if (c2.getType() == CellType. LABEL) 
    {   
    LabelCell nc = (LabelCell) c2;   
    String number    b2 = nc. getString();
    }
    if (c2.getType() == CellType. DATE) 
    {   
    DateCell nc = (DateCell) c2;   
    Date number    b2 = nc. getDate();
    }if (c2.getType() == CellType.NUMBER) 
    {   
    NumberCell nc = (NumberCell) c2;   
    double number    b2 = nc.getValue();
    }
      

  2.   

    你这个只是取到当前CELL的值不能取到A,B,C之类的列名
      

  3.   


    public ArrayList<Groupinfo> getData(File file, int ignoreRows) {
    List<String[]> result = new ArrayList<String[]>();
    int rowSize = 0;
    BufferedInputStream in = null;
    try {
    in = new BufferedInputStream(new FileInputStream(file));
    POIFSFileSystem fs = new POIFSFileSystem(in);
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    HSSFCell cell = null;
    for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
    HSSFSheet st = wb.getSheetAt(sheetIndex);
    for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
    HSSFRow row = st.getRow(rowIndex);
    if (row == null) {
    continue;
    }
    int tempRowSize = row.getLastCellNum() + 1;
    if (tempRowSize > rowSize) {
    rowSize = tempRowSize;
    }
    String[] values = new String[rowSize];
    Arrays.fill(values, "");
    boolean hasValue = false;
    for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
    String value = "";
    cell = row.getCell(columnIndex);
    if (cell != null) {
    // cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    switch (cell.getCellType()) {
    case HSSFCell.CELL_TYPE_STRING:
    value = cell.getStringCellValue();
    break;
    case HSSFCell.CELL_TYPE_NUMERIC:
    if (HSSFDateUtil.isCellDateFormatted(cell)) {
    Date date = cell.getDateCellValue();
    if (date != null) {
    value = sdf.format(date);
    } else {
    value = "";
    }
    } else {
    value = new DecimalFormat("0").format(cell.getNumericCellValue());
    }
    break;
    case HSSFCell.CELL_TYPE_FORMULA:
    if (!cell.getStringCellValue().equals("")) {
    value = cell.getStringCellValue();
    } else {
    value = cell.getNumericCellValue() + "";
    }
    break;
    case HSSFCell.CELL_TYPE_BLANK:
    break;
    case HSSFCell.CELL_TYPE_ERROR:
    value = "";
    break;
    case HSSFCell.CELL_TYPE_BOOLEAN:
    value = (cell.getBooleanCellValue() == true ? "Y" : "N");
    break;
    default:
    value = "";
    }
    }
    if (columnIndex == 0 && value.trim().equals("")) {
    break;
    }
    values[columnIndex] = value.trim();
    hasValue = true;
    }
    if (hasValue) {
    result.add(values);
    }
    }
    }
    String[][] xlsContent = new String[result.size()][rowSize];
    System.out.println("rows:" + result.size());
    System.out.println("col:" + rowSize);
    for (int i = 0; i < xlsContent.length; i++) {
    xlsContent[i] = (String[]) result.get(i);
    }

    } catch (Exception ex) {
    System.out.println(ex.getMessage());
    return null;
    } finally {
    try {
    if (null != in) {
    in.close();
    }
    } catch (Exception ex) {}
    }
    }
      

  4.   

    循环的时候能excel里面的行是从下标0开始,但是0行对应的是用户自己定义的数据,A,B,C这些个默认表头是excel自带的列头,从sheet的起始行是取不到的
      

  5.   

    谢谢各位,已经解决了。poi 的方法提供转换。
      

  6.   

    能告诉我POI里自带的是哪个方法 吗, 我也正需要这个东东, 自己暂时是使用根据列坐标匹配A B C来完成的