将电子表格转换为Javabean

时间:2014-03-04 20:27:16

标签: java excel javabeans

我有一个x行数的电子表格。每行都有一组静态数据。我想将这些数据转换为Java bean。

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

|名称|年龄|

|约翰| 21 |

我有一个像这样简单的Bean ......

public class Person{

private String name;
private int age;

//standard getters and setters

}

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

3 个答案:

答案 0 :(得分:1)

使用JExcel API

像这样:

    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();
    }
}

您可以使用

sheet.getRow()[].getContents();

每列。它将返回一个可以为Bean解析的String。

答案 1 :(得分:0)

这是一个名为jxls的开源库,它将电子表格数据转换为java bean http://jxls.sourceforge.net/reference/reader.html

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

答案 2 :(得分:0)

使用sep4j,您可以在使用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);

您还需要在Person类中为age属性添加基于字符串的setter。

    public void setAge(String ageString){           
        this.setAge(Integer.parseInt(ageString));
    }