将电子表格转换为Javabean

将电子表格转换为Javabean,java,excel,javabeans,Java,Excel,Javabeans,我有一个电子表格,有x行。每行都有一组静态数据。我想把这些数据转换成一个Javabean 例如,如果我的行看起来像这样 public class Person{ private String name; private int age; //standard getters and setters } |姓名|年龄| |约翰| 21| 我有一个简单的豆子像这样 public class Person{ private String name; private int age; //s

我有一个电子表格,有x行。每行都有一组静态数据。我想把这些数据转换成一个Javabean

例如,如果我的行看起来像这样

public class Person{

private String name;
private int age;

//standard getters and setters

}
|姓名|年龄|

|约翰| 21|

我有一个简单的豆子像这样

public class Person{

private String name;
private int age;

//standard getters and setters

}

将电子表格转换为JavaBean的最佳方式是什么?我目前正在使用hssf读写工作表,但想不出从电子表格创建bean的简单方法。我知道我可以根据行数和列数调用所有getter/setter,但一定有更好的方法,有什么想法吗?

这里有一个名为jxls的开源库,它将电子表格数据转换为JavaBean

但是,我认为将数据写入/读取为XML,然后使用jaxb将XML转换为JavaBean可能更容易

像这样:

    public DataReader(File file) {
    this.file = file;
    Workbook workbook;
    try {
        workbook = Workbook.getWorkbook(file);
        sheet = workbook.getSheet(0);
    } catch (BiffException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public void readData() throws ParseException {
    int sheetLength = sheet.getRows();
    System.out.println(sheetLength);

    for (int i = 1; i < sheetLength; i++) {
        String eventTitle = sheet.getRow(i)[22].getContents();
    }
}
对于每列。它将返回一个字符串,您可以为Bean解析该字符串。

使用HashMap定义标题后,您可以在一行中完成该操作

    Map<String, String> reverseHeaderMap = new HashMap<String,String>();
    reverseHeaderMap.put("User Name", "name");  //"User Id" is a column header in the excel.
                            //"name" is the corresponding property of User class.
    reverseHeaderMap.put("Age", "age"); 

    List<User> users = ExcelUtils.parseIgnoringErrors(reverseHeaderMap, inputStream, Person.class);

这似乎是一个很好的方法,但我必须使用excel 2010,它不支持:(@Shijima看起来最新版本可能与Excel 2010兼容。请尝试下载1.7版,并在DataReader类中尝试简单的示例,方法是将jar包含在您的构建路径中并导入到您的类中。不幸的是,我的组织要求我只使用其内部下载站点上批准的软件。该版本不可用,+1不过,如果推荐的话,这真的会让事情变得简单:)
    public void setAge(String ageString){           
        this.setAge(Integer.parseInt(ageString));
    }